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

本文介绍了桶排序的基本原理及其实现方式,并提供了一个使用Java编写的桶排序示例。桶排序是一种简单快速的排序算法,在小数据集上表现优异,但需要额外的空间开销。

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

一、推荐阅读

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

它的实现思路大致如下:

在这里插入图片描述

二、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);
        });

    }
}

三、桶排序的优缺点

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

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

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BoringRong

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值