我有一个Sorted整数数组。我们可以使用二进制搜索来查找元素。 现在,如果已排序数组的一个元素与另一个元素互换。 找到互换元素的最佳方法是什么?
答案 0 :(得分:2)
我不确定我是否完全理解这个问题,无论如何你不知道这两个要素,而且因为交换没有"规则"。看来你至少需要o(n)来找到互换的元素。 (通过一个简单的循环)。
如果您确实知道一个元素(其中一个元素)并想要找到另一个元素。只需二元搜索你知道的那一对,你就可以找到另一对。
答案 1 :(得分:0)
看起来找到这种元素的唯一方法是常规线性搜索。你不能做得更快,因为你基本上没有搜索特定的元素,你正在搜索某个属性被违反时的位置(在这种情况下是排序)。因为你不知道什么可以帮助你跳过检查一些位置,你基本上需要检查所有这些。所以它将是O(n) - 常规线性搜索。
答案 2 :(得分:0)
您需要进行线性搜索,最坏情况时间是线性的。但最佳案例时间可能是log n。
找到第一个置换元素后,您就会知道该整数。因此,您可以进行二进制下降以找到它应该处于的位置。所以基本上,如果两个不匹配中的一个早期发生,您将节省时间