排序算法(7)----桶排序
来源:互联网 发布:外文数据库 编辑:程序博客网 时间:2024/06/08 20:05
桶排序:
* 计数排序适合小范围的大量重复元素,而桶排序适合区间内尽可能随机的元素
* 它的思想是:
* 计数排序适合小范围的大量重复元素,而桶排序适合区间内尽可能随机的元素
* 它的思想是:
* 把数据存在的区间划分为小的区间,就像桶一样,这些在一个桶中的数据在桶内排好序,再合并成排序后的元素
如果大家知道散列表的拉链法,就可以大致的明白这个桶排序是一个什么样子的状态了.
这里,我是用了我自定义的有序单链表来保证每个桶内的元素有序,如果有疑问,可以参考这篇博客:http://blog.csdn.net/weixin_35757704/article/details/78005383
全部代码:
package com.sort;import com.list.OrderedList;/** * 桶排序: * 计数排序适合小范围的大量重复元素,而桶排序适合区间内尽可能随机的元素 * 它的思想是: * 把数据存在的区间划分为小的区间,然后将这些数据在小区间内排好序,再合并成排序后的元素 */public class BucketSort { public static int[] bucketSort(int[] arr) { //找到最大值与最小值,得到分布的区间 int min = arr[0]; int max = arr[0]; for (int anArr : arr) { if (anArr > max) { max = anArr; } else if (anArr < min) { min = anArr; } } //得到最大值后,就可以划分区间了,这里我把它分为10个区间 int part = 10; //这里对step进行改造,防止数组下标越界 while ((max - min) % part != 0) { max += 1; } int step = (max - min) / part; return bucketSort(arr, step, part); } private static int[] bucketSort(int[] arr, int step, int part) { OrderedList[] lists = new OrderedList[part]; //开辟新的数组空间,用来保存链表 for (int i = 0; i < arr.length; i++) { lists[i] = new OrderedList(); } //现在开始遍历整个待排数组,并且把它们有序的排在 lists 中 for (int anArr : arr) { lists[anArr / step].insert(anArr); } //输出 int index = 0; int[] resultArr = new int[arr.length]; for (int i = 0; i < arr.length; i++) { int count = lists[i].getCount(); for (int j = 0; j < count; j++) { resultArr[index] = lists[i].popFirst(); index++; } } return resultArr; }}这种排序算法实现起来比较繁琐,因此我在编写算法的时候总是感觉某些地方不太合适,但是这也是一种新的思想,值得学习
阅读全文
0 0
- 排序算法(7)----桶排序
- 【排序算法】桶排序
- 排序算法-桶排序
- 排序算法-桶排序
- 排序算法----桶排序
- 排序算法---桶排序
- 排序算法:桶排序
- 排序算法之--桶排序/radix排序
- 排序算法-桶排序和计数排序
- 【经典排序算法】桶排序
- 排序算法之桶排序
- 排序算法十:桶排序
- 排序算法五:桶排序
- 排序算法之桶排序
- 排序算法-桶排序1
- 排序算法之桶排序
- 排序算法之桶排序
- 图解排序算法:桶排序
- 二分搜索算法
- PowerDesigner15的PDM中表图显示NAME和CODE
- View的绘制流程
- <c语言经典100例>c15 字符统计
- 女生名叫黄蒲军校, 军博会却在广州举办?
- 排序算法(7)----桶排序
- New Document
- 如何写SysV服务管理脚本
- 关于mybatis的一些学习笔记
- 面试总结
- Powerdesigner中把表结构导出为Excel的脚本
- 合并K个有序链表(LeetCode:Merge k Sorted Lists)
- qt写登录界面知识点总结
- 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 E.Maximum Flow(找规律?)