解题思路:
首先要知道K是对最小值的定位,j是一个搬运工,不断地去找后面的值来和当前的K对应的值相比较,
如果在比较的过程中,出现的值比当前的k值小,那么k就变成了这个值的定位,依次比较和变换,直到所有的无序数比较完成;
比较完成之后,如果这个K定位的值不是第一个值即(k != i),那么两个值互换,此时需要临时变量(temp)来储存这个K所定位的值
注意事项:
选择排序最简单的理解:
有两个区:有序区和无序区,在无序区中找到所需值后,放到有序区中,然后无序区继续循环比较找值,直到无序全部转为有序。
参考代码:
#include #include int main() { int a[10]; int i,j,k,temp;//k是最小数的下标; for(i = 0;i<10;i++){ scanf("%d",&a[i]); } for (i = 0;i < 9;i++){ k = i;//假设最小值是第一个数,用这个暂时最小数去找数组最小数 for(j = i; j < 10;j++){ if(a[j] < a[k]) { k = j; } } //如果最小数不是第一个数,则把最小数和第一个数互换。降序同样的原则 if(k != i){ temp = a[k]; a[k] = a[i]; a[i] = temp; } } for(i = 0;i < 10; i++){ printf("%d\n",a[i]); } return 0; }
0.0分
0 人评分
2005年春浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:584 |
C语言程序设计教程(第三版)课后习题12.2 (C语言代码)浏览:805 |
2005年春浙江省计算机等级考试二级C 编程题(3),复杂度最低的方法没有之一!!!!!浏览:805 |
【出圈】 (C语言代码)浏览:553 |
WU-蓝桥杯算法提高VIP-勾股数 (C++代码)浏览:1592 |
【蟠桃记】 (C语言代码)浏览:1021 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:262 |
水仙花 (C语言代码)浏览:1047 |
字符逆序 (C语言代码)浏览:609 |
C语言程序设计教程(第三版)课后习题10.7 (C语言代码)浏览:653 |