#include <stdio.h> int main(int argc, const char * argv[]) { int a[10]; int i, j, k, m; //循环变量,中间变量 printf("请输入10个数字,数字之间用空格隔开! "); for (i=0; i<10; i++) { scanf("%d", &a[i]); } //选择排序的实现方法 for (i=0; i<9; i++) { k = i; for (j=i+1; j<10; j++) { //找出最小的数 if (a[k]>a[j]) { k = j; printf("第%d次遍历,找到的最小数:%d ",i+1, a[k]); } } printf("第%d次遍历交换位置前: ",i+1); int x; for (x=0; x<10; x++) { printf("%d ",a[x]); } printf(" "); if (k!=i) { //交换位置 m = a[i]; a[i] = a[k]; a[k] = m; } printf("第%d次遍历交换位置后: ",i+1); for (x=0; x<10; x++) { printf("%d ",a[x]); } printf(" "); } //输出结果 printf("最终结果为: "); for (i=0; i<10; i++) { printf("%d ",a[i]); } printf(" "); return 0; }
请输入10个数字,数字之间用空格隔开!
9 8 7 6 5 4 3 2 1 0
第1次遍历,找到的最小数:8
第1次遍历,找到的最小数:7
第1次遍历,找到的最小数:6
第1次遍历,找到的最小数:5
第1次遍历,找到的最小数:4
第1次遍历,找到的最小数:3
第1次遍历,找到的最小数:2
第1次遍历,找到的最小数:1
第1次遍历,找到的最小数:0
第1次遍历交换位置前:
9 8 7 6 5 4 3 2 1 0
第1次遍历交换位置后:
0 8 7 6 5 4 3 2 1 9
第2次遍历,找到的最小数:7
第2次遍历,找到的最小数:6
第2次遍历,找到的最小数:5
第2次遍历,找到的最小数:4
第2次遍历,找到的最小数:3
第2次遍历,找到的最小数:2
第2次遍历,找到的最小数:1
第2次遍历交换位置前:
0 8 7 6 5 4 3 2 1 9
第2次遍历交换位置后:
0 1 7 6 5 4 3 2 8 9
第3次遍历,找到的最小数:6
第3次遍历,找到的最小数:5
第3次遍历,找到的最小数:4
第3次遍历,找到的最小数:3
第3次遍历,找到的最小数:2
第3次遍历交换位置前:
0 1 7 6 5 4 3 2 8 9
第3次遍历交换位置后:
0 1 2 6 5 4 3 7 8 9
第4次遍历,找到的最小数:5
第4次遍历,找到的最小数:4
第4次遍历,找到的最小数:3
第4次遍历交换位置前:
0 1 2 6 5 4 3 7 8 9
第4次遍历交换位置后:
0 1 2 3 5 4 6 7 8 9
第5次遍历,找到的最小数:4
第5次遍历交换位置前:
0 1 2 3 5 4 6 7 8 9
第5次遍历交换位置后:
0 1 2 3 4 5 6 7 8 9
第6次遍历交换位置前:
0 1 2 3 4 5 6 7 8 9
第6次遍历交换位置后:
0 1 2 3 4 5 6 7 8 9
第7次遍历交换位置前:
0 1 2 3 4 5 6 7 8 9
第7次遍历交换位置后:
0 1 2 3 4 5 6 7 8 9
第8次遍历交换位置前:
0 1 2 3 4 5 6 7 8 9
第8次遍历交换位置后:
0 1 2 3 4 5 6 7 8 9
第9次遍历交换位置前:
0 1 2 3 4 5 6 7 8 9
第9次遍历交换位置后:
0 1 2 3 4 5 6 7 8 9
最终结果为:
0 1 2 3 4 5 6 7 8 9