循环有序数组的二分查找
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)的时间内,所以寻找最小值也要使用二分查找。
以上是关于循环有序数组的二分查找的主要内容,如果未能解决你的问题,请参考以下文章