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

Posted

tags:

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

#include<iostream>
using namespace  std;
int main()
{
    int arr[] = {5,6,7,8,9,1,2,3,4};
    int left = 0, right = 8;
    cout<<"循环有序数组arr[]={";
    for(int i = 0; i < 9; i++)
    if(i != 8)
    cout<<arr[i]<<",";
    else
    cout<<arr[i]<<"}"<<endl;
    while(left <= right)
    {
        int mid = left + (right - left) >> 1;
    if(arr[left] < arr[right])
    {
        cout<<"最小值为:"<<arr[left]<<endl;
        return 0;
    }
    else
    {
        if(arr[left] > arr[mid])
        {
            right = mid - 1;
        }
        else if(arr[mid] > right)
        {
            left = mid + 1;
        }
        else
        {
            int minn = arr[left];
            for(int i = left + 1; i < right ; i++)
                if(arr[i] < minn)
                {
                    minn = arr[i];
                }
            cout<<"最小值为:"<<minn<<endl;
            return 0;
        }

技术图片

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

循环有序数组的二分查找

二分法之数组去重和找最小值

LeetCode面试题11. 旋转数组的最小数字

二分查找-变种

旋转数组最小值二分查找法

Task 04:数组二分查找