前章では、https://www.cnblogs.com/X404/p/11984707.htmlは、データ構造が分かれている知ることができます
1.論理構造を含みます。
1)コレクション
2)線状構造
3)ツリー
4)図の構造。
2.ストレージ構造
1)シーケンシャルストレージ
2)チェーン店
3)インデックス格納
4)ハッシュストレージ
もっと重点を知るために必要とされます、
ADOは、第一章と一緒に行くために、アルゴリズムは、私を満たすように設計する必要があります。
1.妥当性:正しいことを確認します
2.可読性:分かりやすいです
3.ロバストネス:無効なデータを入力し、エラーかどうか
4.時間と空間:時間の複雑さと効率を向上させるためのアルゴリズムの空間計算量の分析(主要)
各メジャー2のための最良のアルゴリズムを選択します。
時間計算:総ステップ数がアルゴリズム(開始からブレークポイントまで実行)を実行するために必要な
宇宙複雑:(実行後のストレージスペースのサイズ)アルゴリズムは、共有ストレージ・スペースが実行されます
「通常動作」などの1つまたは複数の操作の合理的な選択
各アルゴリズムは、何回標準動作を決定するために実行され、アルゴリズムは、この位置倍の量指定された数を算出します
計算時間の複雑さの量を決定します:
最悪の場合、アルゴリズムの時間計算量:すべての入力がの量を計算する際のアルゴリズムは、最大量を計算します
(最悪のケースの時間計算量はバトンゲームに相当し、開始から最悪のケースでフィニッシュまでの合計時間は、時間の複雑さと呼びます)
すべての入力のための計算量で計算された加重平均値アルゴリズム:アルゴリズムの平均場合の時間の複雑
(ケースの平均時間の複雑さは、リレーはまだ時間にわたって、平均値は加重平均と呼ばれ、ゲームに使用することができます)
最悪の場合の時間の複雑さと平均的なケースの複雑性をまとめ時間計算と呼ば
+時間複雑=」の加重平均複雑さの最悪の場合の時間計算量(最悪加重時間複雑に含まれます)
ボイド MAX(int型A、B、C、D) {A * = D; B * = D、C * = D; IF(A> B)X = A; そうでなければ X = B; IF(C> X)X = C; のprintf(" %d個\ N- " 、X-);} / * 最悪の時間の複雑さにカウントするペンまでの時間はどのくらいですか?* /
大きさの昇順の順序によって、共通の時間複雑さのために一度:
一定のO(1):どんなに多くのラインの複雑な構造周期または実行されているようなO(1)
int型私は、jは、
I = 2;
jは= 3 I ++ ; J ++
iは+ J =。
O(long2n)の順で:
1つの int型のA; 2 ながら(< N){ 3、A = A * 2 。4 }
whileループ内では、それぞれの時間は、乗り心地を完了した後、2により距離を掛けますnは近づいています。次いで、X = log2n、我々は、Xサイクル時間、2より意志大きく、このときループ終了を想定し、次に、それを解決しようとすると、それは2×のパワーに等しいN
サイクルlog2nコードであります終わり。したがって、このコードの時間複雑である:O(LOGN)
線形順序O(N):
1つの int型I; 2 ための(iは= 0、I <N、I ++ ){ 3のprintf(" ******* ");}
このループのコードが実行されるコードは、n回、時間ように、コードのこのタイプは、O(n)は時間複雑で表されることができるので、それは、Nの変化に変化することがかかり。
線形のオーダー(nlong2n)O:
リニア、対数オーダーO(nlogN)非常に簡単に理解することは、時間の複雑さはO(LOGN)コードループN倍である、実際に、その時の複雑さがあるN * O(logN個)、それはO(nlogN)したいです。
1 ために(iは= 1、I <N、I ++ ){ 2 J = 1 。 3 しばらく(J < N){ 4 J = J * 2 ;}}
二乗オーダO(N 2)、
多項式オーダーONC)、
インデックスの順序O(CN)
私たちは、大きさのいくつかのデータ入力機能の時間複雑することができ、N、n2はあなたが操作を実行する必要がある問題を解決する場合には、O(N2)として記録され、
時間の複雑さと時間の関係
宇宙の複雑さ:
収納スペースの大きさの操作一時的占領対策時のアルゴリズムがあります。
アルゴリズムの実行中に必要なストレージ・スペースの量は、以下の部分を含みます:
プログラムコードが占有するスペース。
スペースは、入力データによって占め;
補助変数空間が占有しました。