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

#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;
        }

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

猜你喜欢

转载自blog.51cto.com/14472348/2474985
今日推荐