2016-12-11 17 views
-3

誰でも次のバブルソート機能の時間の複雑さを見つける手助けはできますか?私は本当にこれをやるのに苦労している。もし誰かが私を助けることができれば、本当に役に立ちます。以下は私のコードです:バブルソートの時間の複雑さを確認しますか?

void bubble_sort (int n) 
{ 
    int i, j, k, temp ; 
    struct link *p, *q ; 
    k = n; 
    for (i = 0 ; i < n - 1 ; i++, k--) 
    { 
     p = head ;//Sorting the linked list in descending order for displaying 
     q = p ->next ; 

     for (j = 1 ; j < k ; j++) 
     { 
      if (p -> freq < q -> freq)//checking frequencies for sorting 
      { 
       temp = p ->freq ; 
       p -> freq = q -> freq ; 
       q -> freq = temp ; 
      } 
      p = p -> next ; 
      q = q -> next ; 
     } 
    }//Sorted linked list 
} 
+0

ようこそスタックオーバーフロー。まもなく、[About]と[Ask]ページをお読みください。何を試しましたか?経験的な証拠を求めていますか、それとも理論的にやっていますか?これは、リストの先頭を指し示すグローバル変数として 'head'に依存する奇妙な関数であり、ソートするリスト内の項目の数として引数' n'をとります。リストが 'n'よりも短い場合はどうなりますか?より長いです?通常は、リストの先頭を関数に渡し、リスト全体をソートします。あなたは本当にMCVE([MCVE])を作成し、それをあなたの質問に含めるべきです。 –

答えて

2

はのは、操作の数を計算してみましょう:外側のループは、各反復についてn-1

  • を実行します

    • 、内側のループはn - i - 1回を実行します。

    • コードの大部分はネストされたループ内にあります:比較、スワップ操作、および2つのポインタの変更:O(1)時間です。

    全体的な動作の数に出てくる(N *(N - 1)/ 2)* O(1)

    従って、上記のコードの時間複雑度はOである(nは)