基数排序最佳和最差案例时间成本分析

时间:2018-03-17 01:57:07

标签: algorithm sorting time-complexity radix-sort counting-sort

当Radix排序与稳定排序一起使用时(特别是计数排序),Radix排序的最佳和最差情况时间成本通常都由Theta(d(n + k))给出,其中d是数字每个要排序的数字的数字,k是每个数字可以取的值的数量(通常为10(因为0到9))。

尽管我进行了研究,但我仍然无法找到一个很好的解释,即" best"和#34;最糟糕的"案例用于Radix排序。有人可以解释什么是最好的"案件和"最糟糕的"在使用Radix排序的上下文中的情况?如果是这样,你能否证明它们都在Theta(d(n + k))?

1 个答案:

答案 0 :(得分:0)

基数排序对从最后一位移动到开头的数字进行排序(先对一个数字进行排序,然后对十位数进行排序,然后对100s进行排序,等等),因此,它对d进行了排序(对位数进行排序)。现在,当查看如何对每个数字集进行排序时,这是通过存储桶排序算法完成的,其中范围内的每个整数(通常为0-9)都有自己的“存储桶”,然后将每个数字根据以下内容放入相应的存储桶中:当前数字的值(5表示5、8表示8等)。尽管通常将其表示为θ(n),但实际上是θ(n + k),其中n是元素数,k是存储区数,本质上是数据范围(0-9是10桶)。

关于存储桶排序的最困难的部分是,从列表到存储桶的映射需要为θ(1),这使得映射n个元素为θ(n)。从那里开始,最耗时的部分来自必须依次走下每个铲斗(k个铲斗)并拉出其中的各个元素(n个元素)。因此,存储桶排序算法变为θ(n + k)。

总体而言,每次用n + k的工作完成d个存储桶排序,从而使整体复杂度θ(d(n + k))。

相关问题