算法学习笔记(7)-桶排序

文章目录

      • 一、推荐阅读
      • 二、Java实现
      • 三、桶排序的优缺点

桶排序是一种简单快速的排序,它在小数据范围内的排序速度可以堪比快排,它的缺点是需要产生额外的空间复杂度(或许这是常用的排序算法里空间复杂度最高的一个排序算法了),用空间来换取时间。

一、推荐阅读

这里推荐两篇文章,感觉蛮好的,特别是的第二篇文章

  • 最简单的排序-桶排序

  • 桶排序Java实现

它的实现思路大致如下:

算法学习笔记(7)-桶排序_第1张图片

二、Java实现

/**
 * @Auther: ARong
 * @Date: 19-4-1 下午2:17
 * @Description: 桶排序
 **/
public class BucketSort {

    public static void main(String[] args) {
        int[] array = {1,5,5,2,1,3,0,6,9,3,4};
        bSort(array);
    }

    public static void bSort(int[] array) {
        //申请空间
        int[] temp = new int[array.length + 1];
        for (int i = 0; i < array.length; i++) {
            //存储标识++
            temp[array[i]]++;
        }
        //用于处理结果的list
        List result = new ArrayList<Integer>();
        for (int i = 0; i < temp.length; i++) {
            if (temp[i] > 1) {
                for (int j = 0; j < temp[i]; j++) {
                    result.add(i);
                }
            } else if (temp[i] > 0) {
                result.add(i);
            }
        }
        //打印
        result.forEach(n->{
            System.out.print(n);
        });

    }
}

三、桶排序的优缺点

  • 优点
    实现简单,在数据量小的情况下性能良好,是稳定的排序算法

  • 缺点
    严重依赖于额外的存储空间

你可能感兴趣的:(#,-----【算法学习】)