一个数组先递增后递减求最大值
一个数组先递增后递减求最大值
public classMain2 {
static int[] a={1,2,3,4,5,6,7,8,6,5,4,2,1};
static int count=0;
static int getmax(int front,int rear){
++count;
if(front==rear)
return a[front];
int mid=(front+rear)/2;
if(a[front]==a[mid]&&front!=mid)returngetmax(front+1,mid-1 );
if(a[mid]==a[rear]&&mid!=rear)returngetmax(mid+1, rear-1);
if(a[front]==a[rear]||a[front]<a[mid]&&a[mid]>a[rear]){
return Math.max(getmax(front,mid), getmax(mid+1, rear));
}
else{
if(a[mid]<a[rear]){
return getmax(mid+1,rear);
}
return getmax(front,mid);
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
a=new int[10000000];
int c=0;
for(int i=0;i<a.length;++i)
{
if(i<=2){
a[i]=++c;
}
else{
a[i]=--c;
}
}
System.out.println(getmax(0,a.length-1));
System.out.print(count);
}
}