C言語によるバブルソートの実装
サンプルプログラム
ここでは実際に、C言語によるバブルソートの実装を見てみることにします。以下のプログラムを実行してみてください。
listex5-quick-1:main.c#include <stdio.h> #define MAX_LENGTH 5 void showData(int*,int); void main(){ int array[MAX_LENGTH] = { 5,2,3,1,4 }; int i,j,tmp; // 先頭の要素のループ for(i = 0;i < MAX_LENGTH-1 ; i++){ // 配列の表示 showData(array,MAX_LENGTH); for(j = i+1; j < MAX_LENGTH ; j++){ if(array[i] < array[j]){ // 値の入れ替え tmp = array[i]; array[i] = array[j]; array[j] = tmp; } } } // 最後にもう一度結果表示 showData(array,MAX_LENGTH); } // 配列の表示 void showData(int* array,int length){ int i; for(i = 0; i < length; i++){ printf("%d ",array[i]); } printf("¥n"); }
5 2 3 1 4
5 2 3 1 4
5 4 2 1 3
5 4 3 1 2
5 4 3 2 1
5 2 3 1 4
5 4 2 1 3
5 4 3 1 2
5 4 3 2 1
15行目のif文の不等号の向きを入れ替えれば、降順・昇順を容易に入れ替えることが可能です。また、定数MAX_LENGTHの値を変えることによって、さまざまなデータのソートを行うことが可能になります。