2017-02-16 18 views
0

?時間の複雑さを計算するにはどうすればいいのですか。時間複雑ソート

#include <stdio.h> 
void shellsort(int arr[], int num) 
{ 
    int i, j, k, tmp; 
    for (i = num/2; i > 0; i = i/2) 
    { 
     for (j = i; j < num; j++) 
     { 
      for (k = j - i; k >= 0; k = k - i) 
      { 
       if (arr[k + i] >= arr[k]) 
        break; 
       else 
       { 
        tmp = arr[k]; 
        arr[k] = arr[k + i]; 
        arr[k + i] = tmp; 
       } 
      } 
     } 
    } 
} 
int main() 
{ 
    int arr[30]; 
    int k, num; 
    printf("Enter total no. of elements : "); 
    scanf("%d", &num); 
    printf("\nEnter %d numbers: ", num); 
    for (k = 0; k < num; k++) 
    { 
     scanf("%d", &arr[k]); 
    } 
    shellsort(arr, num); 
    printf("\n Sorted array is: "); 
    for (k = 0; k < num; k++) 
     printf("%d ", arr[k]); 
    return 0; 
} 
+0

(データ構造とアルゴリズム分析をマークアレンワイスまたはいくつかの他の)://en.mシェルの.wikipedia.org /ウィキ/ Time_complexity –

+2

漸近的複雑さは、ソートその答え(https://en.wikipedia.org/wiki/Shellsortを参照)実装の詳細に依存するトリッキーな質問です。これは、SOが受け入れるよりはるかに広い問題です。 –

+0

コードフォーマット、スペル/文法 – Constantin

答えて

0

我々は我々のコードを考えるもの基づいてあなたの質問に関して高いまたは低い時間計算であるN個の要素を持つアルゴリズムをソートするために考慮すべき単純なことは、ソートされた要素の配列を作るために作られていますどのように多くの比較です。比較は、さらに、システム(CPU)上で使用されるより多くのリソースに変換素子のスワップにつながります。

バブル/挿入ソートは、(何スワップは、次にソート済みアレイに再度スキャンしない行われていない場合に最適化することができる)、N^2つの比較で終わることができます。特定のシナリオでは、シェルソートはn^2よりもうまくいくように改良されました。ウィキペディアポインタは良い参考ですが、特に、より明瞭得るためにソートを扱うアルゴリズムについての本読ん示唆している - のhttpsこれを読んで