哪个数字与排序数组互换

时间:2014-09-25 15:16:53

标签: java arrays algorithm binary-search sorted

我有一个Sorted整数数组。我们可以使用二进制搜索来查找元素。 现在,如果已排序数组的一个元素与另一个元素互换。 找到互换元素的最佳方法是什么?

3 个答案:

答案 0 :(得分:2)

我不确定我是否完全理解这个问题,无论如何你不知道这两个要素,而且因为交换没有"规则"。看来你至少需要o(n)来找到互换的元素。 (通过一个简单的循环)。

如果您确实知道一个元素(其中一个元素)并想要找到另一个元素。只需二元搜索你知道的那一对,你就可以找到另一对。

答案 1 :(得分:0)

看起来找到这种元素的唯一方法是常规线性搜索。你不能做得更快,因为你基本上没有搜索特定的元素,你正在搜索某个属性被违反时的位置(在这种情况下是排序)。因为你不知道什么可以帮助你跳过检查一些位置,你基本上需要检查所有这些。所以它将是O(n) - 常规线性搜索。

答案 2 :(得分:0)

您需要进行线性搜索,最坏情况时间是线性的。但最佳案例时间可能是log n。

找到第一个置换元素后,您就会知道该整数。因此,您可以进行二进制下降以找到它应该处于的位置。所以基本上,如果两个不匹配中的一个早期发生,您将节省时间