首页 > 解决方案 > 对除两个元素外的所有元素进行排序的数组中的二进制搜索,即所有元素都已排序,然后交换两个相邻元素?

问题描述

是否可以在数组中进行二进制搜索,首先对所有元素进行排序,然后交换两个相邻元素(排序数组的)?

示例 3 10 40 20 50 70 80

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

标签: algorithmbinary-search

解决方案


是的,可以对这种类型的数组进行二分查找。这个想法类似于旋转排序数组中的二进制搜索 - 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}。对于此处的第一个子数组,需要应用相同的边界条件。

推荐阅读