数据结构排序之桶排序
原创
©著作权归作者所有:来自51CTO博客作者vaynedu的原创作品,请联系作者获取转载授权,否则将追究法律责任
一 桶排序分析
写完了这个桶排序,赶紧睡觉了,明天还要上课,程序猿的悲哀啊,没想到排序一写就停不下来了,,奏是感觉桶排序很帅,帅爆了,排序时间又快,而且也很简单,这种用坐标的记录值得思想很值得借鉴,记得我进实验室的时候,学长就考了一道题,最后发现用桶排序是轻而易举的事,直接上思想了,瞌睡的很啊。
a数组的的一个值等于b数组的一个下标时,b[i]++,现在应该秒懂吧,贴完图片和代码就碎觉。
二 代码
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
int main()
{
int i,j;
int a[10]; // 就用10个数
int b[100]={0}; //对b数组初始化为0
srand((unsigned)time(NULL));
printf("\n输出乱序数组:");
for(i=0;i<10;i++)
{
a[i]=rand()%10+10; //产生10~20之间的数
printf("%d ",a[i]);
b[a[i]]++;
}
printf("\n输出排序数组:");
for(i=0;i<20;i++) //因为产生的是最大值是19,我用了20
{
for(j=0;j<b[i]&&b[i]>0;j++)
printf("%d ",i);
}
printf("\n");
return 0;
}
三 结果演示
1. 输出重复元素
2.不输出重复元素(只要把上面代码去掉一点就阔以了,在不懂就没办法了)