前几天去面试 有一个题目:在一组无序的整数数组中,找出指定的一个整数,如果存在则返回数组的下标,如果没有则返回-1;
整理了一个正确的二分法代码,还请各位指教。
解答: 首先使用二分法必须是从小到大排列的整数。这个题首先要求冒泡排序(取反 从小到大):
int[] arrays = {12,9,15,8,10,7,6,19};
int temp = 0;
for(int i = 0;i<arrays.length;i++){
for(int j = 0;j<arrays.length-i-1;j++){
if(arrays[i]>array[j+1]){
temp = arrays[j];
arrays[j] = arrays[j+1];
arrays[j+1] = temp;
}
}
}
for(int i=0;i<arrays.length;i++){
System.out.println("排序后的数组:"+arrays[i]);
}
排序后然后我们就开始使用二分法了:
public staitc int geIndex(int[] data,int tegers){
int start = 0;
int end =data.length-1;
int maxIndex = 0;
int index=-1;
while(start<=end){
maxIndex = (start+end)/2;
if(data[maxIndex]<tegers){
start=maxIndex+1;
}else if(data[maxIndex>tegers]){
end = maxIndex-1;
}else{
index = maxIndex;
break;
}
}
return index;
}
。。。。。。。。。。