基数排序和桶排序

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiaoyilong2007101095/article/details/85307942

基数排序是针对特定场景做出的排序方法

特定场景具体指的是:待排序的序列每个元素都是由一组有固定长度,且每个‘字符’都是在一定数值范围内。

说的有点绕,举个栗子(目前也只知道这个场景):

一组有相同长度的字符串需要进行排序,每个字符串长度一定,每个字符串的每一个字符都是A-Z 0-9,假设都是大写。

这个时候就可以使用基数排序了,

基数排序的思想是:

从最后面一个字符开始依次做计数(稳定)排序,直到最左面一个字符为止,排序结束。

时间复杂度是O(n)

桶排序

桶排序的使用也是有一定限制( 计数排序有点类似),待排序的序列需要在一定范围内,且最好该序列元素是平均分布。

主要思想为:

把max-min+1做成N平均份,每份包含K个数,这样min--->min+K就在第一个桶,min+K--->min+2K在第二个桶,依次类推

对每个新放入桶中的元素都做插入排序,遍历完所有元素,从第一个桶开始依次输出,即是有序的。

时间复杂度O(n)

时间复杂度的计算完全没有看懂,就记住算了。

猜你喜欢

转载自blog.csdn.net/xiaoyilong2007101095/article/details/85307942