计算排序O(n + k)时间复杂度的k是多少?

时间:2017-08-03 16:11:45

标签: algorithm sorting counting

计算排序最差,最佳和平均时间复杂度为O(n+k),其中n是要排序的元素数。 究竟是什么? 我看到了不同的定义:最大元素,最大元素和最小元素之间的差异,依此类推。

  1. 给定数组arr1 [1, 3, 5, 9, 12, 7 ]arr2 [1,2,3,2,1,2,4,1,3,2] karr1的{​​{1}}是什么?
  2. 因为计算排序arr2排序是真的,这是真的吗?     arr1(元素值来自比数量更宽的范围     要排序的元素?

3 个答案:

答案 0 :(得分:2)

k是键的范围,即覆盖所有可能值所需的数组槽数。因此,如果是数字,Max-Min+1。当然,这假设您不会通过分配Min第一个广告位和Max广告位而浪费空间。

k不超过n的小倍数时,使用计数排序是合适的,让n.k,因为在这种情况下,n.k可以击败n.log n 1}}。

答案 1 :(得分:2)

k是数组中的最大可能值,假设您有长度为5的数组,每个数字是0到9之间的整数,在本例中k等于9

答案 2 :(得分:0)

首先将k计数数组归零。然后读取数组中的n个元素,并且根据n个元素的值递增k个计数的元素。在计数排序的输出通道上,读取k个计数的数组,并写入n个元素的数组。因此有k次写入(计数为零),n次读取,然后k次读取和n次写入总共2n + 2k次操作,但是大O忽略常量2,因此时间复杂度为O(n + k)。