【发布时间】:2013-08-04 00:53:07
【问题描述】:
在实现插入排序时,可以使用二进制搜索来定位数组的前 i - 1 个元素中的位置,其中元素 i 应插入其中。
这将如何影响所需的比较次数?使用这种二分查找会如何影响插入排序的渐近运行时间?
我很确定这会减少比较次数,但我不确定为什么。
【问题讨论】:
-
二分查找位置取 O(log N) 比较。这使得孔排序的 O(N.log(N)) 比较。 [我们可以忽略 N 在插入时从 1 增长到最后的 N]
-
由于插入,算法仍然是 O(n^2)。因此,虽然二分查找可以减少时钟时间(因为比较次数较少),但它不会减少渐近运行时间。
-
@Derrek Whistle:回答已更新
-
重新打开,因为“重复”似乎根本没有提及比较次数或运行时间。
标签: algorithm sorting binary-search insertion-sort