/* C程序数组算法 — 选择排序法
* 此例子按照 大 -> 小 排序
* 原理:后一个和前一个相比较,若大于/小于 就利用"位置"对调。
* 比较次数: n(n-1) / 2 次 && 互换次数:n-1 次
* 说明:此算法适用于数字比较少的排序 && 此方法和冒泡法相似的一批
* 跟着逻辑走 慢慢看
* 时间:2020年7月12日 20:56:07
*/
#include<stdio.h>
int main()
{
int a[10] = {-2,3,55,66,55,-6,-4,44,28,55};
int i,j,temp,pos; // i和j表示下标的 , temp用来存放最大(小)值的, pos代表位置
for(i = 0;i<9;i++) //外层循环下标为 0—8
{
pos = i; //记录元素位置
temp = a[i]; //设当前元素为最大(小)值
for(j = i+1; j<10;j++)//内层循环下标(i+1) — 9
{
if(a[j] > temp) // 后一个元素和前一个比较
{
pos = j; //记录最大(小)值位置
temp = a[j]; //最大值存在temp
}
}
a[pos] = a[i]; //交换 最大(小)值
a[i] = temp; //交换 最大(小)值
}
for(i = 0;i<10;i++)
{
printf("%d\n",a[i]); //排序好了就打印~
}
return 0;
}
代码如上 ↑