データ構造の基本的な概念と用語、アルゴリズムの時間の複雑さ

!!!データ構造:相互の間に存在する1つ以上の特定のデータ要素のコレクションです。

1.関連用語

1.データ:
それがシンボルですが、これらのシンボルには2つの前提が必要です。コンピューターに入力してコンピューターで処理できることです。整数、実数、音、画像など
2.データ要素:
データを構成する基本単位です。たとえば、動物のデータ要素には猫と犬が含まれます。
3.データ項目:
データ要素は、複数のデータ項目で構成できます。たとえば、人々は年齢、身長、体重などのデータ項目を持っています。**データ項目は、データの最小単位です。**
4.データオブジェクト:
同じ性質のデータ要素のコレクションです。

ここに画像の説明を挿入

2.構造


1.論理構造:
これは、データオブジェクト内のデータ要素間の関係です。
(1)コレクション構造:
セット構造は、同じセットに属していることを除いて、他の関係はありません。
たとえば、次のとおりです。

typedef struct person
{
 char name[10];      //名 
 int  year;   //年龄
float tall;  //身高    
 
}user;

この構造の名前、身長、および年齢は、集合構造です。

(2)線形構造
データ要素は1対1の関係にあります

ここに画像の説明を挿入

(3)ツリー構造
データ要素は多層的な関係であるため、例を示す必要はなく、ツリーです。
(4)グラフィック構造
データ要素は多対多の関係です。
2.物理的構造
簡単に言えば、それはコンピュータのメモリにデータ要素を保存する方法です。
(1)順次保管構造:
これは、配列などの連続したアドレスを持つストレージユニットにデータ要素を格納することです。
(2)チェーンストレージ構造:
データ要素は任意のストレージユニットに格納できますが、データ要素のアドレスを格納するにはポインタを使用する必要があります。




!!!アルゴリズムの時間の複雑さ

アルゴリズムの時間の複雑さは、アルゴリズムの時間測定であり、次のように記述されます。** T(n)= Of(n)**ここで、nは問題サイズnの関数です。
ビッグOオーダーを導出する方法:
(1)実行時間内のすべての加算定数を定数に置き換えます。
(2)実行回数の関数では、最高の項目のみが保持されます。
(3)最上位の項が存在し、1でない場合は、この項を乗算した定数を削除します。
1、一定の順序
一定のアルゴリズムを実行すると、一定の順序であるO(1)時間の複雑さでそれを呼び出します。例:
int sum = 1,n = 100; //执行一次  ``
sum = (1+n)*n/2; //执行一次  

5> 2.線形順序アルゴリズムの順序を決定するには、特定のステートメントまたはステートメントのセットが実行される回数を決定する必要があります。したがって、アルゴリズムの複雑さを分析するには、ループ構造の動作を分析することが重要です。

int sum=0;
for(int i=0;i<n;i++)
{
    sum=sum+i
}

このコードの複雑さはO(n)です。

対数次数:
int count=1;
while(count<n)
{ 
	count=count*2; 	
	} 

各サイクルのカウントが増加し続け、最後にカウントがn以上になると、ループを抜けて、xを使用してサイクル数を表し、2 ^ x = nを取得します。次に、x =log₂n、つまりf(n)=log₂nなので、このアルゴリズムの時間の複雑さはO(log2n)です。

4.スクエアオーダー:
ループの時間の複雑さは、ループ本体の複雑さにループの実行回数を掛けたものに等しくなります。
例:内側のループの時間複雑度はO(n)であり、外側のレイヤーはO(n)であり、合計時間複雑度はO(n²)です。
for(int i=0;i<n;i++)
{      
     for(int j=0;j<n;i++)
     {    
        ........   
      }
 }



一般的な時間の複雑さ:
ここに画像の説明を挿入
一般的な時間の複雑さによって消費される時間は次のとおりです。
ここに画像の説明を挿入

オリジナルの記事を10件公開 Likes2 訪問数217

おすすめ

転載: blog.csdn.net/dfwef24t5/article/details/105228753