データ構造の基本

データ構造の重要性を強調し、それが数学、コンピュータのハードウェアとソフトウェア3、プログラム=アルゴリズム+データ構造間のコアカリキュラムとの間にあります

1-1データ構造の種類:

論理構造

1)線形構造
つの線形関係、そのようなライブラリ管理システムの数:データ構造「線形」。
特別:キューとスタックの文字列。
プロモーション:配列、一般リスト。

2)非線形構造
「木」のデータ構造:そのようなコンピュータ・ファイル・システムのような多くの関係にレベル1。
「図」データ構造:ネットワークなどのメッシュ多くの関係、及びネットワーク通信図面図。
ツリーは、前記及び図を含むバイナリツリーは、グラフを有向および非有向。
3)収集構造。

第二に、ストレージ構造

1)シーケンシャルストレージ構造:上位アドレスに低いからデータストレージ、アレイタイプはCで記述されています
2)ストレージ構造:各ノードは、2つの連続するストレージユニットを占め、ストレージノード情報、後続ノードの最初のアドレスを記憶された他の当事者は、Cは、ポインタ型によって記述されます。

1-2基本概念

データ:記号は、整数や実数、文字列などの客観的なものを表しています。
データ要素:データの基本単位で、オブジェクトの完全な説明のために。
データ入力:組成メンバーのデータ要素。
データは、オブジェクトの同じ性質のデータ要素集合を

1-3抽象データ型とデータ型

図1に示すように、データ型(日付型)に設定されており、この一般的な用語の値のセットで動作する値の集合の定義。

図2に示すように、抽象データ型(ADT)、一般的な数学的モデルと総称名の定義されたアプリケーションモデル上の操作のセット備え表し、ユーザー定義を意味する:データ・オブジェクト、コレクション、およびデータオブジェクトの関係をデータオブジェクトに対する操作の基本セット。
次のように定義されたフォーマットである:
ADT抽象データタイプ名
{
<定義データオブジェクト>データオブジェクト
<定義データ関係>データの関係
の基本操作<基本的な動作を定義>
} ADT抽象データタイプ名が
定義されている形式の基本的な操作:
基本動作(パラメータテーブル)
初期状態:<記載初期条件>
結果<記載の演算結果>
パラメータの基本的な操作の二つのタイプ:
割付パラメータ:動作入力値だけ
基準パラメータ:「&」を開始し、入力値を提供することができます操作結果に戻ります。
これは表し、抽象データ型の実装:
(1)タイプ及び予め定義された定数。

//函数结果状态代码
#define OK 1
#define ERROR 0
#define OVERFLOW -2
//Status 是函数返回值类型,其值是函数结果状态代码。
typedef int Status;

ユーザによるこの種のデータを使用することに合意したElemTypeような自己定義されたデータ要素のタイプ、場合;(2)データ構造表現(記憶構造)型定義(typederf)に記載しました。
(3)基本的な動作アルゴリズムは、次の形式の関数によって記述されています。

函数类型 函数名(函数参数表)
{
	//算法说明
	语句序列
}//函数名
	

関数は、結果ステータスコード値が関数で返す場合、機能は、ステータスタイプとして定義されています。
メモリの(4)動的割当ておよび解放:
新規および削除ダイナミック割り当てとメモリ空間の解放を使用する:
スペースポインタ変数を割り当てる=新たなデータが入力
自由空間削除ポインタ変数
:(5)割当
系列割り当て:変数名1 =変数名を2変数名= ... = N =式。
グループ割り当て:(変数名1、変数名... N)=(式1、...、式n)が
割り当て:1つの構造名前構造名= 2、
構造体名=(値1、値2、...、値n)の
割り当ての条件:変数名=条件式?式T:F式
交換割付:変数名1 < - > 2変数名

1-4アルゴリズム、アルゴリズム解析:

まず、アルゴリズムの定義:所定の特定の問題を解決するためのオペレーションの有限シーケンス。

第二に、アルゴリズムの特性:有限の、確実性、実現可能性、入力および出力。

第三に、アルゴリズムのメリットを評価するための基本的な基準:正しさ、読みやすさ、堅牢性、効率性。

IV。

アルゴリズムの時間計算量:

1、アルゴリズムのコストに影響を与える最も重要な要因は、一般的にN、N、長いアルゴリズムの実行時間で示され、時間スケール(アルゴリズムどのくらいの入力問題)の問題です。

2、ステートメントの実行時間は、およそ所望の回数(周波数ステートメント)の=繰り返し実行し、実行時間積(単位時間による分析)です。

3、アルゴリズムの定義の時間複雑:

1)単純なアルゴリズムの場合:直接周波数の計算とすべての文。

2)複雑なアルゴリズムの場合:唯一の文(繰り返し実行時間は、多数のアルゴリズムと「基本的な声明」に比例して、アルゴリズムの実行時間が、アルゴリズムの負荷を測定するために、実行回数の)最も貢献しました。

単純なアルゴリズムの例:アルゴリズムは、二つの行列の積を求めて:

for(i=1;i<n;i++)      //频度为 n+1 
 for(j=1;j<n;j++)     //频度为 n*(n+1)
 {   
  c[i][j]=0;          //频度为 n^2 
  for(k=1;k<=n;k++)   //频度为 n^2*(n+1) 
  c[i][j]=c[i][j]+a[i][k]*b[k][i];//频度为 n^3 
 } 

周波数の和がすべての文および次数nの関数行列である、請求F(N)で表されます

F(N)/ N ^ 3 = C、 即ち、F(n)とnは同じオーダーのキューブ、または同じ大きさのオーダーである、段階の数が「O」で示され

時間T(N)= O(F(N))のアルゴリズム尺度は、アルゴリズムの実行時間は、Fの成長率(n)が成長と同じです。

図4に示すように、解析アルゴリズムの基本的な方法の時間計算:
基礎文としてそのステートメントの最大周波数を見つけることは、の周波数は、問題サイズN F(N)の機能を与えるように計算されます。

5、非再帰的アルゴリズム解析例の時間複雑:
)一定の順序:T(N)= O(1)、
2)線形順序:T(N)= O( N)、 オーダーのリニア:T(N) = O(N * IOG2(N-));
3)多項式の次数:. T(N)= O。 (N ^ K)
程度の正方形として:T(N)= O( N ^ 2)
立方順序:T(N) O =(N ^ 3)
の順序の4):T(N)= O(IOG2(N))
。5)指数順序:T(N)=(2 ^ N)O
nの一般的な、増加、 T(n)が最適なhello低成長アルゴリズムのためのアルゴリズム、明らかに非効率的なインデックス順、多項式アルゴリズムの順序を選択してみてください。

サイクル数は、アルゴリズム(N)の時間計算量は最も深い基礎ステートメントサイクルで周波数fによって決定された場合

第五に、アルゴリズムの空間計算量:
1.定義:アルゴリズムに必要なストレージスペースの尺度として。
S(N)= O(F (N));
注:一般的に、操作空間を考慮して、より適切であり、分析の焦点としてアルゴリズムの時間複雑。

公開された34元の記事 ウォン称賛85 ビュー4633

おすすめ

転載: blog.csdn.net/weixin_45895026/article/details/103825369