シリーズ記事の目次
第1章 予備アルゴリズム(1): 簡単なソートアルゴリズムを通じて時間計算量を理解する
第 2 章 予備アルゴリズム (2): 挿入ソートの詳細と時間計算量の詳細な紹介
第3章 予備アルゴリズム(3):二分法の解説と実装(C言語)、順序配列における二分法の応用
目次
序文
ご存知のとおり、アルゴリズムはプログラマーにとって必ず学ばなければならない内容であり、編集者は新人なので、先にバカ鳥を飛ばしておきますが、このシリーズでは、私がアルゴリズムを学習した個人的な経験と、学んだことを記録していきます。 . この記事を読んだ友達が一緒に頑張ってくれると嬉しいです!
インターネットの検索アルゴリズムを学ぶ際、同じくソートから始める偉い人(主人公はどこから来たの?)がいるのですが、その偉い人のメモも適宜参考にさせていただきます。
1. 時間計算量とは何ですか?
時間計算量を理解する前に、まず定数時間演算という知識を導入します。
1.1 一定時間動作:
コードを書くとき、いくつかの命令を書きますが、これらの命令はデータ量とは関係がなく、一定時間の操作である固定時間の操作です。
一部の式の操作、配列のアドレス指定、配列からの数値の取得など。
定数時間演算を理解したら、 をソートして時間計算量を理解しましょう。
1.2 時間計算量:
1.2.1 並べ替え:
まず、選択ソートのアルゴリズムについて説明します。選択的並べ替えは最も単純な並べ替えである必要があります。以下は動画です (ヒーローの出身地から借用したものです)。(英雄はどこから来たのか)
時間計算量を計算するときは、通常、最悪のステップ (すべてのステップが実行される)が考慮されます。選択ソートでは、
int main()
{
int n = 0;
scanf("%d", &n);
int arr[10000];
int minIndex = 0;
int temp = 0;
for (int i = 0; i < n; i++)
{
scanf("%d", &arr[i]);
}
for (int i = 0; i < n; i++)
{
minIndex = i;
for (int j = i + 1; j < n; j++)
{
if (arr[minIndex] > arr[j])
{
minIndex = j;
}
}
temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
for (int i = 0; i < n; i++)
{
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
アルゴリズムの時間を判断するには、(1)まず 2 つの時間計算量の指標を確認します。2 つのアルゴリズム プロセスの時間計算量が同じ場合、(2)実行するために大量のデータを含むサンプルを使用します。、「その時間は短くなります」を参照してください。定常運転の場合も一定時間にズレが生じます。
2. スペースの追加の複雑さは何ですか?
追加スペースの複雑さは、実行中にプロセスによって要求される追加スペースです。
要約する
以上が今日お話しする内容ですが、この記事では時間計算量と追加の空間計算量について簡単に紹介するだけです。皆さんも読んだらコメントを残していただけると嬉しいです、ありがとうございます!