三大排序之【选择排序】

想要写出一个算法程序,一定要知道它的理论,没有思想一定不可能写出代码来。

我们今天学的是选择排序:

那么什么是选择排序呢? 选择排序很简单它的意思就是:每一次都从未排序中选出最大值,依次存放在已经排序好的后面,

一定要做到依次存放。

假设有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];
             }

    }




}

猜你喜欢

转载自blog.csdn.net/weixin_40989362/article/details/81459744