三大排序算法——桶排序
今天开始,我们就要絮叨絮叨编程里的三大排序算法了。
这三个排序算法是初学编程的同学应该必备的知识点,可以说是基础中的基础了。
今天我们先来看看三大基础排序算法中的第一个算法——桶排序
桶排序算法是三大排序算法中最最最最最最快,也最简单的因为他又硬又莽。
我们先来看看他的思路是怎样的:
首先我们先假定一个场景:
豌豆射手小豌要把5个带有编号的豌豆按照从小到大的顺序进行排序
小碗一看,豌豆的最大编号是99,于是它找来(99+1)个铁桶僵尸:
然后把每个铁桶僵尸分配0-99编号,并把豌豆塞到对应编号的铁桶僵尸的铁桶里:
OK!我们的小豌完成了豌豆的排序!
桶排序的精髓就在于利用下标自排序的性质来完成数据的排序。
敏锐的小伙伴会发现这个算法的缺陷:占内存
桶排序如此耗费内存的原因就是在于其用于排序的数组的容量取决于数据的最大值。当我们用桶排序的方法排序字面值不大的数据时,电脑可以说是毫不费力地就可以完成任务;但是当我们排序字面值达到百万、千万、亿、兆甚至更高级别的数据时,电脑就会显得乏力(这里就要用到我们下一期要讲的冒泡排序和快速排序的知识了)。所以,在用桶排序的时候,尽量减少桶内数据的数量是提高效率的唯一办法。
当然,这个算法也有其优越性:自动过滤重复项
当我们需要对数据进行查重过滤时,我们需要对数据进行查重。桶排序因为其数组下标的唯一性,在数据被输入到排序数组时自动完成了查重工作。这一点是另外两个排序算法所不具备的。
下一期我们要讲另外一个基础算法:冒泡排序。喜欢的小伙伴可以关注我的博客Kloney。