同じ時間計算量で、あるアルゴリズムが別のアルゴリズムよりも速いのはなぜですか?

Nathan Loudjani

私はコーダミングチャレンジに取り組んでいました:競馬デュアル。目標は、リストの2つの要素間の最小の違いを見つけることです。

私はこの最初のアルゴリズムから始めました。これは私が考えていることですO(nlog(n))が、大きな配列の実行はタイムアウトしていました。

int array[N];
int min = numeric_limits<int>::max();

for (int i = 0; i < N; i++) {
  int value;
  cin >> value;
  cin.ignore();
  array[i] = value;

  for (int j = i - 1; j >= 0; --j) {
    int diff = abs(array[j] - value);
    if (diff < min) {
      min = diff;
    }
  }
}

次に、この他のアルゴリズムも試しましたがO(nlog(n))、今回は時間内に実行が終了します。

int array[N];
int min = numeric_limits<int>::max();

for (int i = 0; i < N; i++) {
  int value;
  cin >> value;
  cin.ignore();
  array[i] = value;
}

sort(array, array + N);

for (int i = 1; i < N; ++i) {
  int diff = abs(array[i - 1] - array[i]);
  if (diff < min) {
    min = diff;
  }
}

最初のコードの複雑さは間違っていますか?気づかなかった違いはありますか?

ご協力いただきありがとうございます。

ダニエル・ラング

最初のコードの複雑さは間違っていますか?

はい、あなたは間違っています。この複雑さはO(n log n)ではなく、代わりにO(n ^ 2)です。

外側のループはnN)回実行され、内側のループは平均でn / 2回実行されます。したがって、複雑さの計算では乗法定数は重要ではないため、複雑さはO(n * n / 2)であり、O(n ^ 2)です。

気づかなかった違いはありますか?

はいあります。O(n log n)のように、非常に同じ複雑さの2つのアルゴリズムがある場合でも、漸近的な複雑さの動作では無視される隠れた定数のため、両方とも非常に異なる時間に実行できます。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

次のアルゴリズム(サイクルソート?!)の時間計算量がO(n)であるのはなぜですか?

時間計算量2つのO(n ^ 2)アルゴリズムは同じ時間かかりますか?

アルゴリズムの時間計算量を改善するにはどうすればよいですか?

あるアルゴリズムの時間計算量は別のアルゴリズムにカスケードされていますか?

アルゴリズムの時間計算量がステップ/操作の観点から定義されることが多いのはなぜですか?

このアルゴリズムの時間計算量はΘ(n)ですか?

Javaで1つのアルゴリズムが別のアルゴリズムよりも速いことをどのように証明できますか

BlossomアルゴリズムがMicali-Vaziraniアルゴリズムよりもよく使用されているのはなぜですか

BlossomアルゴリズムがMicali-Vaziraniアルゴリズムよりもよく使用されているのはなぜですか

次の再帰的アルゴリズムの時間計算量はどのくらいですか?

このアルゴリズムの時間計算量はどのくらいですか?

この特定のアルゴリズムの時間計算量を計算するにはどうすればよいですか?

KMPアルゴリズムの最良および最悪の時間計算量は何ですか

このアルゴリズムの時間計算量を計算するにはどうすればよいですか?

以下のアルゴリズムの時間計算量はどれくらいですか?

このJSアルゴリズムの時間計算量はどれくらいですか

このBFSアルゴリズムの時間計算量はどれくらいですか?

このアルゴリズムの時間計算量はどれくらいですか?

このアルゴリズム(Big-O)の時間計算量はどれくらいですか?

この生成アルゴリズムの時間計算量はどれくらいですか?

このコイン交換アルゴリズムの時間計算量はどれくらいですか?

数独のアルゴリズムXの時間計算量はどれくらいですか?

このreverseWordsアルゴリズムの時間計算量はどれくらいですか?

このアルゴリズム(擬似コード)の時間計算量はどれくらいですか?

なぜ、アルゴリズムの時間計算量を見つける際に、対数の基数が常に2と見なされるのですか?

与えられたアルゴリズムの時間計算量はどれくらいですか?

1つのアルゴリズムが他のアルゴリズムよりも速いのはなぜですか(リンクリストで数値を追加する)

A *検索アルゴリズムがAよりも優れているのはなぜですか?

ソートアルゴリズムが同じ量の比較を返すのはなぜですか?

TOP 一覧

  1. 1

    Unity:未知のスクリプトをGameObject(カスタムエディター)に動的にアタッチする方法

  2. 2

    セレンのモデルダイアログからテキストを抽出するにはどうすればよいですか?

  3. 3

    Ansibleで複数行のシェルスクリプトを実行する方法

  4. 4

    tkinterウィンドウを閉じてもPythonプログラムが終了しない

  5. 5

    Crashlytics:コンパイラー生成とはどういう意味ですか?

  6. 6

    GoDaddyでのCKEditorとKCfinderの画像プレビュー

  7. 7

    Windows 10 Pro 1709を1803、1809、または1903に更新しますか?

  8. 8

    Chromeウェブアプリのウェブビューの高さの問題

  9. 9

    モーダルダイアログを自動的に閉じる-サーバーコードが完了したら、Googleスプレッドシートのダイアログを閉じます

  10. 10

    Windows 10の起動時間:以前は20秒でしたが、現在は6〜8倍になっています

  11. 11

    Reactでclsxを使用する方法

  12. 12

    ファイル内の2つのマーカー間のテキストを、別のファイルのテキストのセクションに置き換えるにはどうすればよいですか?

  13. 13

    MLでのデータ前処理の背後にある直感

  14. 14

    グラフからテーブルに条件付き書式を適用するにはどうすればよいですか?

  15. 15

    Pythonを使用して同じ列の同じ値の間の時差を取得する方法

  16. 16

    mutate_allとifelseを組み合わせるにはどうすればよいですか

  17. 17

    ネットワークグラフで、ネットワークコンポーネントにカーソルを合わせたときに、それらを強調表示するにはどうすればよいですか?

  18. 18

    テキストフィールドの値に基づいて UIslider を移動します

  19. 19

    BLOBストレージからデータを読み取り、Azure関数アプリを使用してデータにアクセスする方法

  20. 20

    PowerShellの分割ファイルへのヘッダーの追加

  21. 21

    ソートされた検索、ターゲット値未満の数をカウント

ホットタグ

アーカイブ