桶排序
来源:互联网 发布:乔丹在奇才队的数据 编辑:程序博客网 时间:2024/05/16 13:03
(注:本文只讨论最简单的桶排序算法,实际开发中的桶排序要复杂得多)
在理解桶排序算法之前,我们先来假设一种生活情境:
农村的孩子都应该拔过萝卜,萝卜拔了之后土地里会留下一个与萝卜大小一致的坑。试想一下,如果我们的坑是按从大到小的顺序排列的,那么我们要给萝卜大小排序,是不是只要将萝卜对应的插入到它的坑里就排好了呢?
一个萝卜一个坑,这是一句老话,但也是桶排序的原理。有人会问,一个萝卜一个坑,那多个相同大小的萝卜怎么办呢?简单,有多少相同萝卜就给那个坑记多少次数就好啦。
接下来我们以具体的数来进行说明桶排序吧。
比如:7,11,5,7,20。这五个数,我设置51个桶(或者坑),从0—50,然后将这5个数对应的填入到0-50对应与之相等的桶中,并做好计数。也就是5计数为1,7计数为2,11计数为1,20计数为1,其余计数为0。然后从50-0循环打印出桶中数据,嵌套循环为打印次数,比如打印7时打印2次。
下面贴上实现代码(C语言版):
下面是测试结果:
桶排序的优缺点:
优点:
1.快速简单。可以看出,桶排序主要由两个for循环,一个是桶的循环,假设桶最大为m,for(i=0;i<m;i++)
;另一个是待排列数的循环,假设有n个待排数,for(j=0;j<n;j++)
。整个排序一共执行了m+n+m+n次,时间复杂度为O(m+n+m+n),即O(2*(m+n)),忽略常数为O(m+n)。所以桶排序的时间复杂度为O(M+N)。可以说这是一种非常高效的排序算法。
缺点:
1.桶排序虽然高效,但是非常占空间资源。
2.桶排序只能对整型数据进行排序。
1 0
- 【排序算法】桶排序
- 排序算法-桶排序
- 第一章排序----桶排序
- 排序算法-桶排序
- 最快排序--桶排序
- 【排序】桶排序
- 排序之桶排序
- 排序之桶排序
- 排序总结---桶排序
- 排序算法----桶排序
- 排序算法---桶排序
- 【排序之一】桶排序
- 排序:桶排序
- 排序详解:桶排序
- 排序算法:桶排序
- 排序—桶排序
- 排序-桶排序
- 排序算法之--桶排序/radix排序
- Android res/raw文件以及raw与res/assets异同
- POJ2551Ones(AC)
- Shader - Pass
- 黄金
- linux中sleep详解实例
- 桶排序
- Java中时间格式化及相关操作
- android Studio遇到transformClassesWithDexForDebug错误
- HttpClient和HttpURLConnection整合汇总对比
- IO流---字节字符流
- java生产者消费者模式代码示例
- JS判断一个数组中是否有重复值的三种方法
- 【bzoj2565】最长双回文串 manacher
- Ubuntu下apt-get命令详解