如果有图书馆所有图书已经排序,除了只有一本图书没有存放在它应该存在的地方。我应该使用哪种算法以最短的时间来对这个库进行排序?目前我认为它将与O(nlogn)合并排序。任何比这更快的算法?
答案 0 :(得分:2)
i
) - 线性扫描j>i
右侧一个地方的所有图书筛选这在O(n)中完成,只有2次传递数据,并且可以通过将步骤(1)和(2)组合在一起来优化仅在一次传递中完成。
另请注意:
这基本上是使用两个数组进行mergesort,(但是这个变体有额外的O(1)空间):
由于array(1) - Original已经排序,你可以跳过其中的递归调用,然后直接进入mergesort的合并步骤。
答案 1 :(得分:1)
如果您确定它几乎已经排序,那么插入算法甚至泡泡将是最好的...实际合并不会是最好的,因为它会进行太多的订单检查
看看this gif,它可以帮到你:)