データ構造 - 1つの基本概念

1つの基本的な考え方

1.1データ構造とは何ですか

実施例2 N、1からNまでのすべての正の整数を印刷する順序整数正に合格しました:

//递归实现
void PrintN(int N){
	if(N){
		PrintN(N-1);
		printf("%d\n",N);
	}
}

再帰プログラムは大きなスペースを占める
に関連する空間の効率で、方法の効率性を解決するために、
ここに画像を挿入説明
第二標準関数
ここに画像を挿入説明
実行時間のプログラムをテストするために)クロックを使用して(

しかし、使用済番組終了時刻のうちのいくつかは0にほぼ等しく、非常に小さくなり、次いで、あなたができる重复プログラムを実行します

データ構造とは何ですか

ここに画像を挿入説明
論理構造:直鎖構造(一方の1つ)、木(多くの1つ)、図(多くの)
物理的なストレージ構造:メモリを節約するためにコンピュータアレイまたはリンクされたリストで使用されています

抽象データ型

ここに画像を挿入説明
ここに画像を挿入説明
floatまたはdouble気にされていないために、のElementTypeはのタイプです

1.2アルゴリズムとは何ですか

ここに画像を挿入説明

良いアルゴリズムは何ですか

時間計算量T(n)が

プログラム実行時に書かれたアルゴリズムによります耗费时间的长度この長さは、多くの場合、入力データのサイズと関連しています。高すぎる結果を待ちませつながります。

宇宙複雑S(n)は、

プログラム実行時に書かれたアルゴリズムによります占用存储单元的长度この長さは、多くの場合、入力データのサイズと関連しています。過度の使用は、プログラムが異常に中断された原因と、メモリオーバーランを引き起こす可能性があります。
ここに画像を挿入説明
彼はスペースを占領して、各コールが店舗情報にメモリ空間の一定量を占めるが、唯一の一時的な変数のサイクルのために、サイクルのために、と呼ばれる任意の設計プログラムの疑いがない再帰的なことは一定です。
ここに画像を挿入説明
ここに画像を挿入説明
例:
ここに画像を挿入説明
アルゴリズム1:暴力行為。三つは、Nであることを証明できる、forループネスト。3つの * 1定数
ここに画像を挿入説明
場合、iの和サイクルkは省略されてもよいように、一緒に数で、jは知ることが、図から見ることができる
ここに画像を挿入説明
可能な限りN-の2 nlogNに改善

アルゴリズム3:分割統治は、大規模で複雑な問題に小片に切断し、それらを解決するために分割し、最終的に結果がために結合されている
ここに画像を挿入説明二つの部分、最大の再帰検索の左半分に分割し、右部分的再帰検索は、最大のいくつかの真ん中検索で最大の
ここに画像を挿入説明
計算時間複雑:複雑さはT(N)の半分の数字の複雑さの、そして可用性によって示されている場合を想像し、全体の問題が解決し、時間のN番号がありますT(N / 2)のサイズの半分からです。
赤色中間部:左から右へ、次いで、スキャンから中間走査するので、各エレメント1が走査され、複雑さがNの定数倍でなければならない
ここに画像を挿入説明
ここに画像を挿入説明
正当は明らかではない(理解されていません)
ここに画像を挿入説明
ここに画像を挿入説明

公開された16元の記事 ウォンの賞賛0 ビュー236

おすすめ

転載: blog.csdn.net/qq_42713936/article/details/104679842