首页 > 代码库 > 旋转数组最大值

旋转数组最大值

 排序好的数组:1,2,3,4,5,6,7,经过旋转操作后(比如,4,5,6,7,1,2,3)求最大值???

 

#include<iostream>using namespace std;/*---------_旋转后的数组找最大值------------	1,2,3,4,5,6,7;	5,6,7,1,2,3,4	7,1,2,3,4,5,6*/void findmax(int *x,int N){	if(!x||!N)	return;	int i=0,j=N-1;	while(i<j-2)	//_剩两个时停止    //在"5,6,7","6,7,1" 的情况时,剩下两个不好处理,放到后面单独解决
     { if(x[(i+j)/2]>=x[i])    //大于等于时(i+j)/2 参与下一次计算 i=(i+j)/2; else j=(i+j)/2-1;    //反之,(i+j)/2 不参与下一次计算 } cout<<(x[i]>x[j]?x[i]:x[j])<<endl;  //剩下的两个中最大的一个}void main(){ int x[7]={5,6,7,1,2,3,4}; findmax(x,7);}

 

旋转数组最大值