排序的方法有很多,现在要用选择排序来对一组数字进行排序,对数字排序降序或者升序。
首先我们要知道什么是选择排序:每一次从无序区选一个值最小或者最大的元素,与无序区第一个元素交换
比如 现在有这样的一组数字:11,25,8,63,4,5升序排列
选择排序 会在这5个数字中找到 最小的数
第一次 找到了 4 ,并且和无序第一个元素11交换:
4, 25, 8, 63,11,5
第二次 用 5 和无序第一个元素25交换:
**4,5,**8,63,11,25
第三次 用 8 和无序第一个元素8交换:
**4,5,8,**63,11,25
第四次 用 11 和无序第一个元素63交换:
4,5,8,11,63,25
第五次 用 25 和无序第一个元素63交换:
**4,5,8,11,25,**63
这样就排序完成了,由小到大排序
我们每一轮只交换一次
根据上面的想法我们可以写出下面的代码(用C实现)
#include<stdio.h>
int main(void)
{
int a[10]={11,22,55,1,6,9,20,69,10,41};
int i,j,k;
int t;
for(i=0;i<10-1;i++) //外层循环是遍历数组的次数
{
k=i; //记录下标表示现在比较到第几个数字了
for(j=i+1;j<10;j++)
{
if(a[j]<a[k])
{
k=j;//把下标记录随后交换
}
}
t=a[i];
a[i]=a[k];
a[k]=t;
}
for(i=0;i<10;i++)
printf("%d ",a[i]);
return 0;
}