菜鳥解釈データ構造とアルゴリズム


どの分野でも、最終的には、問題を解決するための具体的な案、具体的な手順を見つける必要があります.ビルを建設するまで、おいしい夕食を作るまで.実はここの具体的なステップはアルゴリズムで、コンピュータ業界も例外ではありません.
しかし、現実の多くの問題は抽象的で複雑であり、具体的な実施手順を直接見つけることは難しい.しかし、分野や問題によって共通点がたくさんありますよね?したがって,コンピュータプログラム設計ではいわゆる「アルゴリズム」を見つけるために,多くの問題から「データ構造」というものをまとめ抽象化し,「アルゴリズム」を見つけるのに役立つ.データ構造とは数学的に構築された数学モデルである.
コンピュータの中で論理構造と物理構造の上から見る
論理構造:データ・オブジェクト内の要素間のどのような関係を強調します.たとえば、集合関係の集合構造、線形関係の線形構造、ツリー関係のツリー構造、グラフィック関係のグラフィック構造.
物理構造:論理構造のコンピュータにおける記憶方式、順序記憶、チェーン記憶を強調する.
アルゴリズムは特定の問題に対する解のステップである.
1+2+3......+100の和を解く問題を見てみましょう.
問題を解決するために、1,2......100を配列で格納するデータ構造を補佐します.ここの配列は、論理的に線形関係です.物理的にはシーケンスストレージです.もちろんチェーンストレージも確立できますが、現在はシーケンスストレージのみを例に挙げています.
    /*

*/
array[100]; //

//
for(i = 0; i < 100; i++)
{
array[i]=i + 1;
}

では、別のアルゴリズムを用いて解きます.
アルゴリズム2:累積
    //     
int sum=0;

for(i = 0; i < 100; i++)
{
sum=sum + array[i];
}
;

アルゴリズム2:ガウスアルゴリズム
   //    
int sum = 0, n = 100;

sum = (1 + n) * n / 2 ;
;

同じモデリングのデータ構造に対して,異なるアルゴリズムを用いると効率が異なることは明らかである.
皆さんの理解はどうですか?しばらくはこのような例しか考えられませんでしたが、ちょっと合わないかもしれません.