桶式排序


假设现在有一组小于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 = 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();  
    }  
  
}  

优质内容筛选与推荐>>
1、洛谷 P1571 眼红的Medusa【二分查找】 || 【map】
2、边框盒子模型
3、处理嵌套列表
4、jQuery操作Ajax
5、洛谷 P1044 栈


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号