桶式排序
2013-04-11 21:04
148 查看
转载请注明出处:http://blog.csdn.net/droyon/article/details/8790251
结果:
/** * 桶式排序 * 第一步:查找排序数组array中元素的最大值,max * 第二步:初始化计数数组count,数组长度为max+1 * 第三步:count[array[i]]++。 * 例如排序数组array为1,2,4,5,6,0,那么count:[0,0,0,0,0,0,0],执行count[array[i]]后[1,1,1,0,1,1,1] * 第四步:执行count[i]=count[i]+count[i-1].即count[i] <= position+1.即count:[1,2,3,3,4,5,6],这样就将array中的数据排序了 * 第五步:将array拷贝到临时数组temp中。 * 第六步:执行array[--count[temp[i]]] = temp[i] * @author * */ public class BucketSort { private static int[] array = new int[]{1,1/*8*/,2,9,3,7,11,23,90,4,5}; public static void main(String args[]){ System.out.println("排序前"); printArray(array); System.out.println("\n排序后"); BucketSort(array); printArray(array); } private static void BucketSort(int[] array){ int[] tempArray = new int[array.length]; int max = array[0]; for(int i=1;i<array.length;i++){ if(max<array[i]){ max = array[i]; } } int[] count = new int[max+1]; for(int i=0;i<array.length;i++){ count[array[i]]++; } for(int i=1;i<count.length;i++){ count[i] = count[i]+count[i-1];//值最大为position+1 } System.arraycopy(array, 0, tempArray, 0, array.length); /** * 详细了解过程,可以把输出打开 */ // System.out.println("count array"); // printArray(count); // System.out.println(); // System.out.println("temp array"); // printArray(tempArray); // System.out.println(); for(int i=0;i<array.length;i++){ array[--count[tempArray[i]]] = tempArray[i]; } } public static void printArray(int[] array){ for(int i=0;i<array.length;i++){ System.out.print(array[i]+" "); } } }
结果:
排序前 1 1 2 9 3 7 11 23 90 4 5 排序后 1 1 2 3 4 5 7 9 11 23 90
相关文章推荐
- 算法学习笔记(一):桶式排序及其稳定性
- Java排序算法--桶式排序(Bucket Sort)
- 地精排序和桶式排序——为什么我们要学算法
- 《排序算法》——希尔排序,桶式排序(Java)
- 桶式排序
- 桶式排序
- 排序算法复习(Java实现):插入,冒泡,选择,Shell,快速排序, 归并排序,堆排序,桶式排序,基数排序
- 桶式排序与基数排序举例及JAVA代码实现(附:基数排序的方法给英文字符串排序)
- C语言基本排序算法之桶式排序实例
- 桶式排序(C语言)
- 排序(五)——关于桶式排序
- 基数排序(桶式排序的扩展?)
- 排序算法复习(Java实现)(二): 归并排序,堆排序,桶式排序,基数排序
- Java排序算法(十):桶式排序
- Java排序算法(十):桶式排序 .
- 数据结构——桶式排序
- 数据结构 c语言设计队列 实现桶式排序和基数排序 测试性能
- 桶式排序
- Java排序算法(十):桶式排序
- 桶式排序(java实现)