zoukankan      html  css  js  c++  java
  • 二分查找 单峰数组中的最大值 O(log n)

    #include <iostream>
    using namespace std;

    //单峰数组最大值算法
    //要求 O(log n)

    //使用二分查找法
    int BinarySearch(int *a,int left ,int right){
    int mid = (left+right)/2;

    //下面2条语句是为了防止数组越界
    if(mid == left && a[mid]>a[mid+1]) return mid;
    else if(mid == right && a[mid]>a[mid-1]) return mid;


    else if(a[mid]>a[mid-1] && a[mid]>a[mid+1]) return mid;
    // 顶峰在右边,去右边找
    else if(a[mid]<a[mid+1]) BinarySearch(a,mid+1,right);
    // 顶峰在左边,去左边找
    else if(a[mid]<a[mid-1]) BinarySearch(a,left,mid-1);
    }

    int main (){
    int n;
    int a[10000];
    int mid;
    cin>>n;
    for(int i=0;i<n;i++){
    cin>>a[i];
    }
    mid=BinarySearch(a,0,n-1);
    cout<<a[mid]<<endl;
    return 0;
    }

  • 相关阅读:
    Bootstrap导航条
    Bootstrap导航
    Bootstrap输入框组
    Bootstrap按钮式下拉菜单
    Bootstrap按钮组
    Bootstrap下拉菜单
    Bootstrap辅助类
    Bootstrap栅格系统
    Bootstrap学习目录
    Bootstrap图标
  • 原文地址:https://www.cnblogs.com/lvjingyuan/p/13745764.html
Copyright © 2011-2022 走看看