桶排序,基数排序,计数排序的区别

桶排序是在数组元素在某个小范围内大量数据情况下时间复杂度为O(n)的排序。
假如数据的范围为0~1000我们就开一个1001大小的数组进行排序,就是假如100出现了就将100的桶b[100]++;

以十进制为例,基数指的是数的位,如个位,十位,百位等
基数排序就是多个桶进行桶排序,比如输入的数最多有两位,我们就先按十位进行桶排序,分为0~9的十个桶,b[0]存0 ~9的数,b[3]存30 ~39的数,然后对每个0-9的桶进行按个位数的桶排序,最后就是整体有序的数组。

计数排序其实就是特殊的桶排序,就是多了一个先找最大最小值开一个大小为max-min+1的数组进行桶排序,假如i(min<=i<=max)出现了,就放进桶b[i-min]++。
比桶排序所需的空间有所减少

它们都是时间复杂度为O(n)的排序,都比较适合在某个小范围内大量重复数据的排序,而且都不需要进行记录关键字间的比较。

发布了68 篇原创文章 · 获赞 15 · 访问量 9007

猜你喜欢

转载自blog.csdn.net/qq_43791377/article/details/103650571