【发布时间】:2016-11-06 18:07:38
【问题描述】:
在熟悉的问题中,数组中的每个元素最多离它的正确位置有 k 个位置,无论是向左还是向右,我并不完全理解插入排序算法的工作原理。
我把它画在纸上,然后一步一步调试。它似乎确实有效,时间复杂度的顺序也是 O(n.k)。
但我的问题是,在这个问题中,元素可能在左侧或右侧有 k 个位置。但是,插入排序只检查左边。它如何仍然能够做到正确? 您能否向我解释一下,尽管我们只向左看,但这种算法仍然有效吗?以我可以说服自己的方式?
PS:这里无关:如果我不知道这个算法,我会想到选择排序之类的东西,对于给定的元素 i,你在左右,选择最小的元素。
PS:更无关紧要:我知道基于最小堆的方法。同样的问题,为什么我们只看左边?
【问题讨论】:
标签: arrays algorithm sorting insertion-sort in-place