c_cpp 二元搜索 - 圆形旋转阵列的应用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 二元搜索 - 圆形旋转阵列的应用相关的知识,希望对你有一定的参考价值。
#include<bits/stdc++.h>
#define min(x,y) x<y?x:y
using namespace std;
int min_index(int a[],int n){
int low=0,high=n-1;
while(low<=high){
if(a[low]<=a[high])
return low;
int mid = (low+high)/2;
int next=(mid+1)%n,prev=(mid+n-1)%n;
if(a[next]>=a[mid] && a[prev]>=a[mid])
return mid;
else if(a[mid]<=a[high])
high=mid-1;
else if(a[low]<=a[mid])
low=mid+1;
}
return -1;
}
int main()
{
int n,i=0;
cin>>n;
int a[n];
while(i<n)
cin>>a[i++];
int index = min_index(a,n);
int final_index =min(index,(n-index)%n);
cout<<final_index<<endl;
return 0;
}
/*
(1)
Input-
5
5 1 2 3 4
Output-
1
(2)
Input-
5
2 3 4 5 1
Output-
2
*/
以上是关于c_cpp 二元搜索 - 圆形旋转阵列的应用的主要内容,如果未能解决你的问题,请参考以下文章
c_cpp 189.旋转阵列 - 难度容易 - 2018.9.4
c_cpp 搜索已排序和旋转的数组中的元素
java 最大连续和圆形阵列
阵列信号处理——旋转不变技术(ESPRIT)
c_cpp 阵列
c_cpp 384.随机播放阵列