基本思路:默认数组中第一个元素num[0]为最小的数,让num[0]依次和num[1]~num[最大]进行比较,如果有比num[0]小的元素,就和num[0]交换数值,这样进行n-1轮,就可以依次把最小的数从左到右排序完成。

image.png
下面是选择排序法的代码和每一步的解释:
#include <stdio.h>
int main(){
//选择排序
int num[10] = {3,0,1,8,7,2,5,4,9,6} ;
int temp;
int n;
n = sizeof(num)/sizeof(int);
for(int i = 0;i < n - 1;i++){
//首先让num[0]是最小值,再是num[1],num[2]...num[n],共比较n-1次即可得出结果
//从num[i+1]~num[最大]开始分别和num[i]比较,如果比num[i]的值小,就和num[i]交换值,保证最小的值都换到了左边
for(int j = i +1;j < n;j++){
if(num[j] < num[i]){
//交换值
int n = num[i];
num[i] = num[j];
num[j] = n;
}
}
}
for(int i = 0;i < n;i++){
printf("%d ",num[i]);
}
return 0;
}