您的位置:首页 > 其它

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

2016-05-27 00:31 204 查看
先来看一个问题:有一列(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();用来暂停程序,以便查看程序输出的内容

}

其实这并不是真正的桶排序算法,真正的桶排序算法要比这个更加复杂,期待以后的讲解!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  算法