今天闲来无事,写一写桶排序。
首先要申明一下,桶排序是非常浪费空间的,比如需要排序的范围在0-2000
之间, 需要排序的数是[3,9,4,2000], 同样需要2001个空间,所以桶排序慎用,但是为什么还要说,因为他也是排序算法之一啊,应该给点尊重,并且学完桶排序理解了也有助于理解基数排序。
那么首先理解下桶排序的工作原理:
他的工作原理就是将要排序大的数组分到有限数量的桶里,然后统计出元素在桶中出现的次数,最后按照顺序输出这些桶里的元素
桶排序的思想:
桶排序的思想基本类似于分治思想,就是把一个规模为N的问题分解为K个规模较小的问题,这些子问题相互独立且与原问题性质相同,求出子问题的解,就可以得打原问题的解。
好了,咱们先捋一下这个流程问题
1.建立好对应的桶
2.把要排序的数组分别放入对应的桶中
3.统计元素在桶中出现的次数
4.按照桶的顺序输出桶里的元素
eg:
要排序的数组为[6,3,9,2,1,4,3,2,1,9,8,7,6]
第一步:初始化桶,首先观察数组最大的元素为几,比如例子里最大的元素为9,那么我们就建立10个桶,因为我们要按照下标来排列
0 0 0 0 0 0 0 0 0 0
0 1 2 3 4 5 6 7 8 9
第一行为初始化桶0,第二行为各个元素
第二步:接下来我们读取列表中的元素,第一个元素为6,那么我们就在下标为6的桶中计数1,结果为:
&nb