标签:blog io os div sp log c r bs
排序好的数组: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);
}
标签:blog io os div sp log c r bs
原文地址:http://www.cnblogs.com/shirishiyue/p/3985519.html