十大排序算法——桶排序

Java

public class BucketSort {

    public static void main(String[] args) {
        double array[] = { 0.78, 0.17, 0.39, 0.26, 0.72, 0.94, 0.26, 0.12,
                0.23, 0.68 };
        bucketSort(array);
        System.out.println(Arrays.toString(array));
    }
    public static void bucketSort(double array[]) {
        int length = array.length;
        ArrayList arrList[] = new ArrayList[length];
        for (int i = 0; i < length; i++) {
            //0.7到0.79放在第8个桶里,编号7;第一个桶放0到0.09
            int temp = (int) Math.floor(10 * array[i]);
            if (null == arrList[temp])
                arrList[temp] = new ArrayList();
            arrList[temp].add(array[i]);
        }
        // 对每个桶中的数进行插入排序
        for (int i = 0; i < length; i++) {
            if (null != arrList[i]) {
                Collections.sort(arrList[i]);
            }
        }
        int count = 0;
        for (int i = 0; i < length; i++) {
            if (null != arrList[i]) {
                Iterator iter = arrList[i].iterator();
                while (iter.hasNext()) {
                    Double d = (Double) iter.next();
                    array[count] = d;
                    count++;
                }
            }
        }
    }
}

最坏情况运行时间:

当分布不均匀时,全部元素都分到一个桶中,则O(n^2);也可以将插入排序换成堆排序、快速排序等,这样最坏情况就是O(nlgn)。

最好情况运行时间:

O(n)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在swift开发中,也是通过用字符串创建类也是通过NSClassFromString函数进行的。 NSClassF...
    RainyHand阅读 860评论 0 4
  • 它是孤单的;是寂静的;是悲伤的。 它是寂静的。那种声音很安静,静到世界事物都停止,你只听到它的声音,静到你想到了...
    Jime十七阅读 65评论 0 1
  • 随喜妹妹照顾他人的想法,照顾好身边人 随喜家人们的互相照顾 随喜妹妹与妹夫的孝顺,对家里的长辈 随喜饭店年30还一...
    未来金刚研究院阅读 193评论 0 0