桶排序简析

参考:https://blog.csdn.net/qq_42524288/article/details/119516084

桶排序是一种空间换时间的算法。

简单的桶数组排序,要新建一个数组,其大小是待排序数字的最大值+1。
对于放着 5, 3,5,2,8 数组arr进行排序:

  • (1)遍历数组arr,找到待排序数组中的最大值max;
  • (2)新建一个数组,空间比最大值max大一些;
  • (3)遍历待排序的数组arr,将数值做为新数组arr2的下标,进行自加;
  • (4)遍历新数组arr2,哪个大于1就输出该处下标即可。
    解释:第三步走完,如下图,arr2中,arr2[2],ar2r[3],arr2[8]处的值分别是1,arr[5]处的值是2,然后进行第四步,遍历数组arr2,遇到不为0的就打印下标,就可以完成排序。
    在这里插入图片描述

复杂的桶数组排序,是一个集合中放好多桶数组,计算桶的数组的数量,分别将一定范围的值放到桶数组中。

  • (1)找出待排序数组中的最大值max和最小值min;
  • (2)使用ArrayList做为桶,然后里面还放ArrayList桶,大小为:(max-min)/arr.length+1;
  • (3)遍历待排序的数组,将数据放到桶中;
  • (4)将各个桶中数据进行排序;
  • (5)遍历桶数组,输出。
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值