public static int BubbleSort_optimise(int [] arr, int size){
if(size == 1)
return;
int flag = 0;//标记是否需继续
int index = size – 1;
int max_index = 0;//前后两面,折半查询思维
int min_index = 0;
for(int i=0; i<size-1; i++){
flag = 1;
for(int j=0; j<index; j++)
if(arr[j]>arr[j+1]){
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
flag = 0;
max_index = j;
}
if(flag)
Break;
Index = max_index;
for(int j=index; j>min_index; j--){
if(arr[j]<arr[j-1]){
int temp = arr[j];
arr[j] = arr[j-1];
arr[j-1] = temp;
flag = 0;
}
min_index++;
if(flag)
break;
}
}//借鉴bo主的链接???
public static int binSearch(int[] Array,int key){
int low = 0;
int high = Array.length-1;
while(low<=high){
int mid = (low+((high-low)>>>1); // int mid = (high-low)>>1;
if(key == Array[mid])
return mid;
else if(key > Array[mid])
low = mid+1;
else
high = mid-1;
}
return -1;
}