在除了两个元素之外的所有元素都已排序的数组中进行二进制搜索,即所有元素都已排序,然后交换两个相邻元素?

时间:2019-02-13 04:54:36

标签: algorithm binary-search

是否有可能在一个数组中进行二分查找,在该数组中首先对所有元素进行排序,然后将两个(排序数组中的)相邻元素互换?

示例 3 10 40 20 50 70 80

在此示例中,已经交换了20和40。

1 个答案:

答案 0 :(得分:1)

是的,可以在这种类型的数组上执行二进制搜索。这个想法类似于旋转排序数组-https://www.geeksforgeeks.org/search-an-element-in-a-sorted-and-pivoted-array/

中的二进制搜索

假设您需要在此搜索40个-

  • 第一次迭代后{3 10 40 20 50 70 80}-> {3 10 40 20}和{50 70 80}。 划分此数组时,将需要限制条件。在这种情况下,需要检查第二个子数组中是否存在40个。
  • 第二次迭代。 -> {3 10 40 20}-> {3,10} {40,20}。 对于此处的第一个子数组,需要应用相同的边界条件。