三大排序之【选择排序】

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

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

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

一定要做到依次存放。

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

    }




}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值