桶排序 java版
2013-08-12 09:19
218 查看
又一线性时间的排序算法。对于线性排序算法的思考,可以看看编程珠玑第一章的内容,研究算法问题的时候要仔细分析好,看清楚问题的数据的结构和分布情况,桶排序要求输入服从均匀分布才发挥其性能
代码:
本文出自 “Hercules” 博客,请务必保留此出处http://herculeser.blog.51cto.com/3272654/1270664
代码:
package com.xingzhe.bucketsort; import java.util.ArrayList; /** * 桶排序,要求输入的数据都服从均匀分布 算法假设每个元素a[i]满足 0<=a[i]<1 * * @author Hercules * */ public class BucketSort { public static void bucket_sort(double[] a) { // 获取长度 int length = a.length; // 此处需要建立一个长度为length的临时数组,每个数组中存放链表,由于java没有泛型数组,故用ArrayList来代替 ArrayList<ArrayList<Double>> b = new ArrayList<ArrayList<Double>>(); // 把“数组”的每个元素都初始化为空链表 for (int i = 0; i < a.length; i++) { b.add(new ArrayList<Double>()); } // 把待排序的数组中的每个元素插入到临时数组中 for (int i = 0; i < a.length; i++) { b.get((int) Math.floor(length * a[i])).add(a[i]); } // 对每个链表进行插入排序 for (int i = 0; i < a.length; i++) { insert_sort(b.get(i)); } // 把临时数组中的每个链表的值取出来合并 int ai = 0; for (int i = 0; i < b.size(); i++) { if (b.get(i).size() == 0) { continue; } for (int j = 0; j < b.get(i).size(); j++) { a[ai++] = b.get(i).get(j); } } } /* * 针对链表的插入 */ private static void insert_sort(ArrayList<Double> array) { if (array.size() == 0) return; for (int j = 1; j < array.size(); j++) { double key = array.get(j); int i = j - 1; while (i >= 0 && array.get(i) > key) { array.set(i + 1, array.get(i)); i--; } array.set(i + 1, key); } } public static void main(String[] args) { double[] a = new double[] { 0.25, 0.36, 0.25, 0.65, 0.18, 0.48, 0.27, 0.29, 0.24, 0.75 }; bucket_sort(a); for (int i = 0; i < a.length; i++) { System.out.println(a[i]); } } }
本文出自 “Hercules” 博客,请务必保留此出处http://herculeser.blog.51cto.com/3272654/1270664
相关文章推荐
- 简易桶排序 ——java实现
- 计数排序和桶排序(Java实现)
- 排序基础之非比较的计数排序、桶排序、基数排序(Java实现)
- Java排序算法——桶排序
- 桶排序java
- 用Java实现桶排序
- 排序算法Java实现——桶排序
- Java排序算法(十)--桶排序
- 桶排序——java
- 桶排序java版本
- java 实现桶排序
- 基于JAVA的排序算法之八--桶排序
- Java实现基数排序(桶排序)
- Java实现桶排序
- 易解排序算法 - 空间换取时间(java写:基数排序,计数排序,桶排序,排序全部源代码)
- 【数据结构】Java实现各类经典排序算法——桶排序、堆排序
- Java关于桶排序的知识点总结
- 《算法导论》学习心得(八)—— 桶排序(JAVA)
- 计数排序和桶排序(Java实现)
- Java高级排序(希尔排序,快速排序,堆排序,归并排序,桶排序)