首页 > 代码库 > 桶式排序
桶式排序
假设现在有一组小于M的正整数 a1、 a2 ,…… ,an ,例如(1-M)对它们排序可以采用以下的思路:使用一个大小为M的数组buckets, 初始化全部为0。当扫描到ai的时候,buckets[ai] 加1。在所有的输入被读进去之后,扫描数组,打印好排序的表
(桶式排序的条件:
待排序列所有的值处于一个可枚举的范围之类;
待排序列所在的这个可枚举的范围不应该太大,否则排序开销太大。
)
例子:对公司的员工年龄进行排序(1-99)
package com.sort;public class BucketSort { public static int count = 0; public static void main(String[] args) { int[] data = http://www.mamicode.com/new int[] { 5, 3, 6, 2, 1, 9, 4, 8, 7 }; print(data); bucketSort(data, data.length, 9); print(data); } // 待排序的data,数组大小,最大的元素 public static void bucketSort(int arrayForSort[], int arraySize, int maxItem) { // 缓存数组 int i,j; int k=0; int Count[ ]=new int[10]; //下标是针对数据的最大值9所以数组的大小应该+1 // 置空 for ( i = 0; i <= maxItem; ++i) { Count[i] = 0; } // 遍历待排序数组 for ( i = 0; i < arraySize; ++i) { ++Count[arrayForSort[i]]; } // 桶排序输出 // 也可以存储在数组中,然后返回数组 for ( i = 0; i <= maxItem; ++i) { for ( j = 1; j <= Count[i]; ++j) { System.out.print( i+"\t"); // 把date的数据变换, arrayForSort[k]=i; k++; } } System.out.print("\n"); } public static void print(int[] data) { for (int i = 0; i < data.length; i++) { System.out.print(data[i] + "\t"); } System.out.println(); } }
桶式排序
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。