计数排序 O(n+k) 时间复杂度中的 k 是多少?
What is k in counting sort O(n+k) time complexity?
计算排序的最差、最佳和平均时间复杂度为 O(n+k)
,其中 n 是要排序的元素数。 k 到底是什么? 我看到了不同的定义:最大元素、最大元素和最小元素之间的差异等等。
- 给定数组
arr1 [1, 3, 5, 9, 12, 7 ]
和 arr2 [1,2,3,2,1,2,4,1,3,2]
arr1
和 arr2
的 k
是什么?
- 用计数排序
arr1
是不是真的很蠢 因为
n < k
(元素值的范围大于
要排序的元素?
k
是键的范围,即覆盖所有可能值所需的数组槽数。因此在数字的情况下,Max-Min+1
。当然,这假设您不会浪费 space 分配第一个插槽 Min
和最后一个插槽 Max
。
当k
不超过[=15=的小倍数时,使用计数排序是合适的,让n.k
,因为在这种情况下,n.k
可以击败n.log n
.
k 是数组中的最大可能值,假设您有长度为 5 的数组,其中每个数字都是 0 到 9 之间的整数,在此示例中,k 等于 9
首先将一个包含 k 个计数的数组归零。然后读取数组中的n个元素,并根据n个元素的值递增k个计数的元素。在计数排序的输出过程中,读取 k 个计数的数组,并写入 n 个元素的数组。所以有 k 次写入(将计数归零)、n 次读取,然后是 k 次读取和 n 次写入,总共进行了 2n + 2k 次操作,但是大 O 忽略了常量 2,因此时间复杂度为 O(n + k)。
计算排序的最差、最佳和平均时间复杂度为 O(n+k)
,其中 n 是要排序的元素数。 k 到底是什么? 我看到了不同的定义:最大元素、最大元素和最小元素之间的差异等等。
- 给定数组
arr1 [1, 3, 5, 9, 12, 7 ]
和arr2 [1,2,3,2,1,2,4,1,3,2]
arr1
和arr2
的k
是什么? - 用计数排序
arr1
是不是真的很蠢 因为n < k
(元素值的范围大于 要排序的元素?
k
是键的范围,即覆盖所有可能值所需的数组槽数。因此在数字的情况下,Max-Min+1
。当然,这假设您不会浪费 space 分配第一个插槽 Min
和最后一个插槽 Max
。
当k
不超过[=15=的小倍数时,使用计数排序是合适的,让n.k
,因为在这种情况下,n.k
可以击败n.log n
.
k 是数组中的最大可能值,假设您有长度为 5 的数组,其中每个数字都是 0 到 9 之间的整数,在此示例中,k 等于 9
首先将一个包含 k 个计数的数组归零。然后读取数组中的n个元素,并根据n个元素的值递增k个计数的元素。在计数排序的输出过程中,读取 k 个计数的数组,并写入 n 个元素的数组。所以有 k 次写入(将计数归零)、n 次读取,然后是 k 次读取和 n 次写入,总共进行了 2n + 2k 次操作,但是大 O 忽略了常量 2,因此时间复杂度为 O(n + k)。