排序图解:
首先第一趟,找到一个最小的元素,这个元素去和第一个元素交换
第二趟,从第二个元素开始查找,找最小的一个元素,最小的和第二个元素交换位置
第三趟,从第三个元素开始查找,用最小的元素和第三个元素交换位置
总共插入n-1次数,因为当倒数第二次数交换后,最后一个已经有序了,所以最后一个不用交换。
在一个数组中,让min=i,因为每次都往i插入,所以i前面是有序的,
第一个for循环是用来比较 n-1趟的,
第二个for循环是从i开始往后的元素查找最小元素的下标, 当发现一个值比min的小,就更新min的值,这样每找到一个最小的元素,就让min记录最小值索引,之后就让 i 和这个min索引值比较
void selectSort(int r[], int n){
for(int i=0; i<n-1; i++){ //这个for循环是用来控制插入次数,
int min = i;
for(int j=i+1; j<n; j+++){ //这个for循环用来寻找最小值索引的
if(r[j]<r[min]){
min = j; //这样就找到了数组中最小元素的下标
}
}
//如果min=i,说明i就是最小的,不用交换,直接更新 i值,
if(min != i){
int tmp = r[i];
r[i] = r[min];
r[min] = tmp;
}
}
}