# バブル ソートは、隣接する要素を比較することによってデータを並べ替えるのに使用される最も単純な並べ替えアルゴリズムの 1 つです。すべての要素は段階的に比較されます。最初のステージでは最大値が最後に配置され、第 2 ステージでは 2 番目に大きい要素が最後から 2 番目の位置に配置され、完全なリストがソートされるまで同様に繰り返されます。
p>
- Arr[] = { 5,7,2,3, 1,4}; length=6
出力-ソートされた配列: 1 2 3 4 5 7
説明−First Pass
5 7 2 3 1 4 → swap → 5 2 7 3 1 4
5 2 7 3 1 4 → swap → 5 2 3 7 1 4
5 2 3 7 1 4 → swap → 5 2 3 1 7 4
5 2 3 1 7 4 → swap → 5 2 3 1 4 7
Second Pass
5 2 3 1 4 7 → swap → 2 5 3 1 4 7
2 5 3 1 4 7 → swap → 2 3 5 1 4 7
2 3 5 1 4 7 → swap → 2 3 1 5 4 7
2 3 1 5 4 7 → swap → 2 3 1 4 5 7
Third Pass
2 3 1 4 5 7 → swap → 2 1 3 4 5 7
2 1 3 4 5 7 no swap
Fourth Pass
2 1 3 4 5 7 → swap → 1 2 3 4 5 7
1 2 3 4 5 7 no swap in further iterations
- Arr[] = { 1, 2, 3, 3 , 2 };
出力− ソートされた配列: 1 2 2 3 3
説明 -First Pass
1 2 3 3 2 → swap → 1 2 3 2 3
1 2 3 2 3 → swap → 1 2 2 3 3
1 2 2 3 3 no swap in further iterations
Second Pass
1 2 2 3 3 no swap in further iterations
次のプログラムで使用される方法は次のとおりです。
前のループでは最大の要素が最後の位置に配置されていたため、長さを 1 減らします。
#ソートされた配列を main に出力します。
例
#include <stdio.h> void recurbublSort(int arr[], int len){ int temp; if (len == 1){ return; } for (int i=0; i<len-1; i++){ if (arr[i] > arr[i+1]){ temp=arr[i]; arr[i]=arr[i+1]; arr[i+1]=temp; } } len=len-1; recurbublSort(arr, len); } int main(){ int Arr[] = {21, 34, 20, 31, 78, 43, 66}; int length = sizeof(Arr)/sizeof(Arr[0]); recurbublSort(Arr, length); printf("Sorted array : "); for(int i=0;i<length;i++){ printf("%d ",Arr[i]); } return 0; }
Sorted array: 20 21 31 34 43 66 78
以上が再帰的バブルソート用の C プログラムの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。