找出数组无序区中的最小值(最大值),与无序区中第一个数(最后一个数)交换。
例子:5 2 3 1 4
第一轮
无序区最小值是1,将1和无序区中一个数交换:1 2 3 5 4。有序区:1,无序区:2 3 5 4
第二轮
无序区最小值是2,因为2就是无序区的第一个数,所以不用交换:1 2 3 5 4。有序区:1 2,无序区:3 5 4
第三轮
无序区最小值是3,因为3就是无序区的第一个数,所以不用交换:1 2 3 5 4。有序区:1 2 3,无序区:5 4
第四轮
无序区最小值是4,将4和无序区中一个数交换:1 2 3 4 5。有序区:1 2 3 4 (5)
排序完毕:1 2 3 4 5
#include <stdio.h>
int main(void) {
int n[10]={0};
int i, j, min, temp; //min是数组n中最小值的下标
for (i=0; i<10; i++) {
scanf("%d", &n[i]);
}
for (i=0; i<9; i++) { //i同时也是无序区第一个数的下标
min = i; //假设最小值是无序区第一个数
//寻找最小值的下标
for (j=i; j<10; j++) {
if (n[j] < n[min]) {
min = j;
}
}
//如果最小值不是无序区第一个数,就把最小值和无序区第一个数交换
if (min != i) {
temp = n[min];
n[min] = n[i];
n[i] = temp;
}
}
for (i=0; i<10; i++) {
printf("%d\n", n[i]);
}
return 0;
}
标签:区中,入门,1023,int,编程,交换,无序,最小值,有序 From: https://www.cnblogs.com/su-1007/p/17294031.html