[C言語]選択ソート

最小値を見つけて先頭に移動、2番目に小さい要素を見つけて2番目に移動 を繰り返していくアルゴリズム

#include 

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

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

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

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


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

	select_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

左右の比較ではなくて、先頭との比較 swap(&array[min_index], &array[i])ってところがなるほどなーって思う