[C言語]バブルソート

隣と比べて、逆順なら入れ替える

#include 

void swap (int *x, int *y){
	int temp;

	temp = *x;
	*x = *y;
	*y = temp;
}

void bubble_sort(int array[], int array_size){
	int i, j;

	for(i = 0; i < array_size - 1; i++){
		for(j = array_size - 1; j >=  i + 1; j-- ){
			if(array[j] < array[j -1]) {swap(&array[j], &array[j-1]);}
		}
	}
}


int main(void){

	int array[10] = { 2, 1, 8, 5, 4, 7, 9, 0, 6, 3};
	int i;

	bubble_sort(array, 10);

	for(i = 0; i < 10; i++){
		printf("%d ", array[i]);
	}
	printf("\n");

	return 0;
}

$ ./main
0 1 2 3 4 5 6 7 8 9

二重でforループを回している時に、"j >= i + 1" として左から順番に大きい値を配列に入れていく。