分享

桶排序

 长沙7喜 2019-10-19

有了前两小节内容的铺垫,我们的算法之旅正式起航!我们的航程从排序开始。

今天要给大家介绍的就是最快最简单的排序——桶排序。没错,你没听错!你可能会问最快的排序难道不是快速排序吗,快速排序的时间复杂度为O(n log n),而桶排序却只需要O(n)。

桶排序顾名思义需要桶。其中的思想是我们首先要知道所有待排序的范围,然后需要有在这个范围的同样数量的桶,接着把元素放到对应的桶中,最后按顺序输出。

那我们要怎么准备桶呢?其实很简单,使用数组就好了,比如有11个桶,我们只需要声明一个长度为11的数组,然后把每个元素往桶中放时,就把数组指定位置的值加1,最终输出数组的下标,数组每个位置的值为几就输出几次下标,这样就可以实现桶排序了。

下面我们来句一个小例子:

怎么样,是不是对桶排序有了更直观的认识呢?

接下来我们用代码来实现数据范围在[0,1000]的整数进行排序。

缺点

试想一下,如果要排序的范围是0-100万,使用桶排序方法进行排序,那么我们要准备100万个桶,这显然对于计算机的开销肯定很大,所以,桶排序在有这时间最快的优势,同时也有这及其耗费内存的缺点。所以桶排序有其局限性,适合元素值集合并不大的情况。

适用情况

数据范围不大,但却又有着海量数据,这个时候就非常合适用桶排序。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多