バブル ソートの基本概念は、2 つの隣接する数値を順番に比較し、小数点を前に、大きな数値を後ろに置きます。つまり、最初のパスでは、まず 1 番目と 2 番目の数値を比較し、小数点を前に、大きな数値を後ろに置きます。次に、2 番目の数値と 3 番目の数値を比較し、小数を前に、大きな数値を後ろに置きます。最後の 2 つの数値を比較するまで同様に、小数を前に、大きな数値を後ろに置きます。これで最初の旅行が終了し、最大数が最後に残ります。 2 番目のパスでは、引き続き最初の数値ペアから比較を開始します (2 番目の数値と 3 番目の数値の交換により、最初の数値が 2 番目の数値より小さくなくなっている可能性があるため)、小数点を最初に置きます。 、および大きな数値を配置した後、最後から 2 番目の数値まで比較が続行されます (最後から 1 番目の位置がすでに最大になっています)。2 番目のパスの終了時に、最後から 2 番目の位置で新しい最大数値が取得されます。位置 (実際には、シーケンス全体の中で 2 番目に大きい番号です)。このようにして、最終的に並べ替えが完了するまで上記のプロセスを繰り返します。
c コードは次のように実装されています:
#include <stdio.h> //打印数组 void display(int array[],int size){ printf("the array is:"); int i; for(i=0;i<size;i++){ printf("%d ",array[i]); } printf("\n"); } //冒泡排序算法 void sort(int array[],int size){ int i,j,temp,flag; for(i=0;i<size;i++){ flag = 0; for(j=size-1;j>i;j--){ //如果前一个数大于后一个数,则交换 if(array[j-1]>array[j]){ temp = array[j]; array[j] = array[j-1]; array[j-1] = temp; flag = 1; } } //如果本次排序没有进行一次交换,则break,减少了执行之间。 if(flag == 0){ break; } display(array,size); } } int main(void){ int array[10]={34,45,1,39,21,68,65,100,4,51}; display(array,10); sort(array,10); return 0; }
並べ替えバブル ソート関連記事の詳細については、PHP 中国語 Web サイトに注目してください。