【发布时间】:2012-04-28 07:47:03
【问题描述】:
我有一个包含 30 个元素的随机有序数组,只有 3 个不同的键(TRUE、FALSE 和 NULL),我想使用插入排序对其进行排序。时间复杂度是多少?假设最坏情况是 O(n2) 还是假设最好情况是 O(n),因为只有 3 个不同的键?
【问题讨论】:
标签: sorting data-structures time-complexity
我有一个包含 30 个元素的随机有序数组,只有 3 个不同的键(TRUE、FALSE 和 NULL),我想使用插入排序对其进行排序。时间复杂度是多少?假设最坏情况是 O(n2) 还是假设最好情况是 O(n),因为只有 3 个不同的键?
【问题讨论】:
标签: sorting data-structures time-complexity
n 指的是数组的大小,而不是数组的可能元素。因此,复杂度是相同的:
拥有 3 个不同的元素将减少您在“插入”阶段必须检查的元素数量,但只是一个常数因子。这不会改变渐近运行时间。
例如,在一般情况下,插入检查不是检查 n 个元素,而是检查 n/3 元素。这更好,但不是渐近的。
【讨论】: