zoukankan      html  css  js  c++  java
  • 桶排序的java实现

    package com.edu.hpu.sort.bucket;
    
    import java.util.LinkedList;
    import java.util.List;
    
    import com.edu.hpu.sort.Sort;
    /*    排序原理:
        顺序从待排数组中取出数字,首先6被取出,然后把6入6号桶,这个过程类似这样:空桶[ 待排数组[ 0 ] ] = 待排数组[ 0 ]
        [6 2 4 1 5 9]           待排数组
        [0 0 0 0 0 0 6 0 0 0]   空桶
        [0 1 2 3 4 5 6 7 8 9]   桶编号(实际不存在)
        顺序从待排数组中取出下一个数字,此时2被取出,将其放入2号桶,是几就放几号桶
        [6 2 4 1 5 9]           待排数组
        [0 0 2 0 0 0 6 0 0 0]   空桶
        [0 1 2 3 4 5 6 7 8 9]   桶编号(实际不存在)
        3,4,5,6省略,过程一样,全部入桶后变成下边这样
        [6 2 4 1 5 9]           待排数组
        [0 1 2 0 4 5 6 0 0 9]   空桶
        [0 1 2 3 4 5 6 7 8 9]   桶编号(实际不存在)
     */
    public class BucketSort extends Sort {
        private int range = 0;
        public BucketSort(int range) {
            this.range = range;
        }
        @Override
        public int[] doSort(int[] arr) {
            @SuppressWarnings("unchecked")
            // 构造辅助数组
            List<Integer> [] aux = new LinkedList[range];
            for(int i = 0; i < aux.length; i++){
                aux[i] = new LinkedList<Integer>();
            }
            for(int i = 0; i < arr.length; i++){
                // 找打元素在桶中的位置,并将其添加
                aux[arr[i]].add(arr[i]);
            }
            for(int i = 0, j = 0; i < aux.length && j < arr.length; i++){
                for(int v : aux[i]){
                    arr[j] = v;
                    j++;
                }
            }
            return arr;
        }
        public static void main(String[] args) {
            Sort sort = new BucketSort(10);
            sort.printOrder(new int []{4, 1, 3, 2, 6, 9, 9});
        }
        
    }
  • 相关阅读:
    OSI七层模型详解 TCP/IP协议
    ZT 第一范式,第二范式,第三范式
    思杰20140522
    Correspondence / ˏkɔris'pɔndәns / dictionary10-800.doc
    闲着没事,贴贴图
    心情闲适,发几个tatanic的图
    005 Python 基础特性
    017 虚拟内存 64位及内存对其 3
    004 Python 文件操作 字典 自定义函数
    003 Python list 索引
  • 原文地址:https://www.cnblogs.com/xinyuyu/p/4787956.html
Copyright © 2011-2022 走看看