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");
}
実行結果1
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

15行目のif文の不等号の向きを入れ替えれば、降順・昇順を容易に入れ替えることが可能です。また、定数MAX_LENGTHの値を変えることによって、さまざまなデータのソートを行うことが可能になります。