计数排序基数排序桶排序

Posted 一件风衣

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计数排序基数排序桶排序相关的知识,希望对你有一定的参考价值。

这篇文章是排序算法的最后一篇了,在前面的文章中,我们一起学习了几个非线性时间的基于比较的排序算法,而今天,我们将学习三个线性时间的非比较算法!

计数排序(Counting Sort)

我们之前提过,任何基于比较的排序算法,其理论上的时间复杂度下限为O(n*logn),而计数排序是一个O(n+k)的算法,思路是空间换时间,是个很好理解的算法。

(一)计数排序算法思想

(此处对原思想做了便于理解的修改)

计数排序算法堆输入的数据有一定的要求,需要满足这样一个条件:输入的数组的元素能取的值是有限的。假设输入的元素都取自集合S,S中元素的个数为k,输入的数组A长度为n。

集合S是有序的,我们对数组A进行遍历,对每个出现的元素分别计数,结果存放在S中。计数完成后,对S进行遍历,每个元素出现了多少次就输出多少个,最后将输出一个有序数组。

(二)计数排序算法图解

假设输入数组中的元素只能取自[0, 1, 2, 3, 4, 5, 6, 7, 8],输入数组以[5, 1, 0, 2, 3, 2, 5, 1, 6, 8, 4]为例,图解如下:

(三)计数排序算法的Python实现

 
   
   
 

以上是关于计数排序基数排序桶排序的主要内容,如果未能解决你的问题,请参考以下文章

八十五再探希尔排序,桶排序,计数排序和基数排序

算法计数排序桶排序和基数排序详解

计数排序,桶排序,基数排序的python实现

大量数据常采用的高效排序算法:桶排序计数排序基数排序

排序算法下——桶排序计数排序和基数排序

排序算法非比较排序:计数排序基数排序桶排序