有人可以解释在最坏的情况下插入排序如何具有二次时间复杂度而不具有准线性时间复杂度吗?
即使是反向排序的列表,也不必将每个元素与所有其他元素进行比较。例如,在[4, 3, 2, 1]
中,4将不会与任何东西进行比较。仅将3与4进行比较。将2与4和3进行比较,但不与1进行比较。将仅将1与所有其他3个项目进行比较。
这个O(n 2 )怎么样?我在这里想念什么?
答案 0 :(得分:-1)
我认为您遗漏了一个事实,那就是如果这些值高于插入的值,则需要移动它们。
说 I =插入并 C =比较
并排序[4,3,2,1]
I4
C4-I3-I4
C4-C3-I2-I3-I4
C4-C3-C2-I1-I2-I3-I4
要在最坏的情况下进行排序,必须执行16个操作(4 ^ 2)= O(n ^ 2)
编辑:如果您不赞成,请至少说明原因。这样我可以改善答案。