基础排序算法(1)——桶排序

桶排序:

桶排序是指先开辟一个足够大的初始化数组,然后把一个待排序集合的元素作为数组的下标,将数组在该元素作为下标上的值+1。

因为数组的下标是有序的,桶排序就是先对待排序集合的元素先进行一次遍历,把每个元素都在开辟的数组上记录下来,然后再对新开辟的整个数组进行一次遍历,按顺序对值不为0的数组元素的下标进行输出。

也因此,桶排序的时间复杂度为O(N+M),是一个稳定的排序算法,但也有存在的问题,即需要开辟的空间很大,不适用与对很大的数进行排序。

《啊哈算法》对我学习桶排序有很大的帮助,所以呢,我就举一个这本书的例子。
简单的来说,有5个数,这五个数的大小都在10以内(包括10),现在对这五个数进行从大到小的排序。

比如我们给出5 3 5 2 8 这五个数

我们用桶排序的方法来做:
1、首先呢,开辟一个足够大的数组,根据题意我们开辟一个大小为11的一维数组int a[11]。把这个一维数组初始化为0后第一步就完成了。

2、然后对待排序集合进行遍历,就是对这五个数进行一次遍历,把每一个数都作为数组a的下标,使其对应的值+1。
第一个数是5,那么就把a[5]+=1,按这个方法进行下去
进行一次遍历后得到的a数组的值为:
{0,0,1,1,0,2,0,0,1,0,0}

3、最后对数组a进行一次遍历,对值为0的元素略过,

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值