最快最简单的排序——————“桶排序”

先来看一个问题:有一列(0~10)随机数 5 3 5 2 8 ,现在要求将它们按照从先到大的顺序或从大到小的顺序排列,如何去做?

在这里可以需借助一个一维数组就可以解决这个问题,首先申请一个大小为11 的数组int a[11]编
号从a[0]~a[10]。刚开始的时候,将a[0]~a[10]都初始化为0,然后进行这一列随机数的输入,将每一个数的数值对应到这个数组所对应的序号的数值加一,即

依次数组a的各个数值为:


                 


接下来,需要将数组中出现过的数值不是0的数打印出来就可以了,出现几次就打印几次。

具体代码为:

#include <stdio.h>

#define M 11
int main(void)
{
     int a[M],i,j,t;
     for(i=0;i<=10;i++)
         a[i]=0;       //初始化为0

    for(i=1;i<=5;i++)    //循环读入5个数
    {

      scanf("%d",&t); //把每一个数读到变量t中
      a[t]++;  //进行计数
   }
   for(i=0;i<=10;i++) //依次判断a[0]~a[10]
   for(j=1;j<=a[i];j++) //出现了几次就打印几次
   printf("%d ",i);

   getchar();  //这里的getchar();用来暂停程序,以便查看程序输出的内容

}


其实这并不是真正的桶排序算法,真正的桶排序算法要比这个更加复杂,期待以后的讲解!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值