二分查找--循環數組找最小值

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

二分查找--循環數組找最小值

相關文章
相關標籤/搜索