2017-04-02 9 views
1

このプログラムはbubble logic.itの別の方法として書きました。うまくいきました。それは本当にバブルロジックプログラムかどうかです私はバブルソートのためのこのcプログラムを書いた。それは良いですが、それは本当にバブル並べ替えロジックですか?

#include <conio.h> 
#include <stdio.h> 

int main() 
{ 
    int data[5], i, steps, temp, j, k; 
    int n = 5; 

    for (i = 0; i < n; ++i) { 
    printf("%d. Enter element: ", i + 1); 
    scanf("%d", &data[i]); 
    } 

    for (k = 0; k < n; k++) { 
    for (j = 0; j < n; j++) { 
     for (steps = 0 + j; steps <= j; steps++) { 
     printf("%d\n\n", steps); 

     if (data[steps] > data[steps + 1]) { 
      temp = data[steps]; 
      data[steps] = data[steps + 1]; 
      data[steps + 1] = temp; 
     } 
     } 
    } 
    } 

    printf("In ascending order: "); 
    for (i = 0; i < n; ++i) printf("%d ", data[i]); 
    getch(); 
} 

アイデア?

+1

いいえ、これはバブルソートではありません。通常のバブルソートは、各パスの前に「ソート済み」フラグをtrueに設定し、スワップを行う場合はfalseに設定し、リストがまだソートされていない場合にのみ次のパスに進みます。 O(n)ベストケース、O(n^2)平均。ここでの実装は、すべてのケースでO(n **^3 **)です。 – Ryan

+1

'data [steps + 1]'が境界外で発生する可能性があります。 – BLUEPIXY

+0

私はあなたの答えが@ライアン私はcに新しいですなかった。私はあなたが話している言葉を知らない。しかし、あなたの努力に感謝します。 :) – Harsh

答えて

0

バブルソートは非常に非効率的なソート方法ですが、私が見つけた「最良の」アルゴリズムは、(擬似コードで)です:

sort (A, n)  // bubble sort array A[0..n-1] 

    k= n-1;   // k holds position of last interchange. All higher elements are sorted. 
    while (k > 0) 
    { 
     l= 0; 
     for (j=0; j < k; j++) 
     { 
      if (A[j] > A[j+1]) 
      { 
       tmp = A[j]; 
       A[j] = A[j+1]; 
       A[j+1]= tmp; 
       l= j; 
      } 
     } 
     k= l; 
    } 
関連する問題