algorithm - insertion sort 对于半排序数组和半反向排序的运行时复杂度

想知道半排序和半反向排序数组的平均运行时复杂度是多少。例如数组:[0,7,2,5,4,3,6,1],每个偶数索引上的数字被排序,奇数索引上的数字被反向排序。运行时间是 O(n) 还是 O(n^2)?谢谢!

回答1

时间复杂度为 O(n^2)。这背后的基本原理是反向排序数组是原始数组的子集,因此即使跳过与排序元素相关的任何工作,它仍然会执行 O((n/2)^2) = O(n^2) 工作来对这些元素进行排序。将其他元素添加到列表中不会删除任何这些步骤(对子集进行的任何比较也将按顺序在完整列表上执行,只是可能不连续)。它也不会超过 O(n^2),因为 insertion sort 的最坏情况时间复杂度是 O(n^2),所以我们从下到上受子问题的时间复杂度的限制,而在上受理论最坏情况的限制-case,所以它的整体时间复杂度是 O(n^2)

相似文章

随机推荐

最新文章