为什么要插入排序数组O(n)?

时间:2014-01-11 11:43:01

标签: algorithm

Skiena在“算法设计手册”中指出插入排序数组是O(n)。然而,在排序数组中搜索项目是O(log n),因为您可以进行二进制搜索。

无法插入也是O(log n),如果我进行二进制搜索比较以找出它应该在数组中的位置?

3 个答案:

答案 0 :(得分:6)

找到位置只是战斗的一半。告诉我如何使用少于五次的移动操作将2放在[1,3,4,5,6,7]中。

答案 1 :(得分:4)

您可以对已排序的数组执行O(log n)搜索,但是当您插入项目时需要移位数据,因此shift为O(n)。

答案 2 :(得分:0)

您可以使用二进制搜索来确定元素的去向。 但是,插入元素意味着您必须为它腾出空间。这是通过将新元素之后的所有元素移动到右侧来完成的。这需要O(n)复杂度。