algorithm - 对除两个元素外的所有元素进行排序的数组中的二进制搜索,即所有元素都已排序,然后交换两个相邻元素?
问题描述
是否可以在数组中进行二进制搜索,首先对所有元素进行排序,然后交换两个相邻元素(排序数组的)?
示例 3 10 40 20 50 70 80
在此示例中,20 和 40 已交换。
解决方案
是的,可以对这种类型的数组进行二分查找。这个想法类似于旋转排序数组中的二进制搜索 - 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}。对于此处的第一个子数组,需要应用相同的边界条件。
推荐阅读
- javascript - D3 v4 Scatterplot chart data points are not updating on zoom
- php - Why the "@foreach($pastRegistrations as $pastRegistration)" is also returning results?
- python - generate data from database to excel by using python but datetime in excel not correct format
- rabbitmq - 使用 Rabbitmq STOMP websocket 获取队列大小
- php - PHP: output XML data in a table
- python - Python: 'PyQt5.QtCore.pyqtSignal' object has no attribute 'connect'
- javascript - 为什么 getElementsByClassName() 可以工作而不是 querySelector()?
- python - Python(Flask RESTful API) 修改对象
- android - 集成 React Native Navigation 时无法运行 React Native 应用程序
- javascript - 如何正确更改对象数组的属性?Javascript ReactJS