二分查找可能出错就在于end-start小于2时。
int find1(int a[],int begin1,int end1,int m){
int start = begin1;
int end2 = end1;
int middle ;
while(start <end2-1){
middle = start + (end2 - start)/2;
if(a[middle] == m){
return middle;
}
if(a[middle]>m)
end2 = middle;
if(a[middle] <m)
start = middle;
}
if(a[start]==m)
return start;
if(a[end2]== m)
return end2;
return -1;
}