想要写出一个算法程序,一定要知道它的理论,没有思想一定不可能写出代码来。
我们今天学的是选择排序:
那么什么是选择排序呢? 选择排序很简单它的意思就是:每一次都从未排序中选出最大值,依次存放在已经排序好的后面,
一定要做到依次存放。
假设有10个数据分别为 1 3 2 7 6 4 9 7 5 9
看这10个数据,从第二个数开始,因为第一个数已经排序好了,利用监岗哨法,假设未排序的数据中,第一个数为最大,和后边的数据依次比较,找到最大值,然后记录下来,将它和开始定义的最大值互换位置,就做到了,从未排序中找到最大值,依次存放在
已经排序好的数据里。
代码如下
#inlude<stdio.h>
void main()
{
int buf[10]={1,4,2,1,5,6,7,8,5,9};
int i,j,listen;
for(i=0;i<10;i++)
{
listen=i; 每次都把未排序的第一个值当成最大值
for(j=i+1;j<10;j++) 因为第一个数不用排序,所以j+1
{
if(buf[listen]>buf[j])
{
listen=j;
}
}
if(listen!=i) 判断最大的不是自己。交换位置
{
listen+=buf[i];
buf[i]=buf[listen]-buf[i];
buf[listen]-=buf[i];
}
}
}