循环有序数组的二分查找

Posted 虾皮的每日算法

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了循环有序数组的二分查找相关的知识,希望对你有一定的参考价值。

      如果有序数组是一个循环有序数组,比如 [4,5,6,7,0,1,2],如何通过二分查找即在O(logn)的时间复杂度内找到指定值呢?

思路:首先找到数组中最小的元素下标,然后将其看作是数组的第一个元素,[4,5,6,7,0,1,2] 4,5,6,7 即看成背景色区域的数组,通过二分查找找到[4,5,6,7,0,1,2]数组的指定值,即通过给mid+offset(最小元素下标)实现在0,1,2] 4,5,6,7中查找指定值,但是要记得取模。如此其代码便和常规的二分查找一般。

因为要在O(logn)的时间内,所以寻找最小值也要使用二分查找。



以上是关于循环有序数组的二分查找的主要内容,如果未能解决你的问题,请参考以下文章

入门算法-二分查找,二分排序,插入排序,冒泡排序

Task 04:数组二分查找

算法题解:二分查找算法(循环/递归)

二分查找法

二分查找--循环数组找最小值

数据结构和算法三个“二分查找”练习