public class Haofang {
public static void main(String[] args) {
// 要查找的数
int i=11;
//准备好的有序数组
int [] arr={1,1,2,2,3,3,4,4,5,6,7,8,9};
int b=serach(arr, i);
System.out.println( "下标是:"+b);
}
/**
* 自定义的二分法查找数组
* @param arr
* @param i
* @return
*/
private static int serach(int[] arr, int i) {
// 数组起始值
int begin=0;
// 数组的结束值
int end=arr.length-1;
// 二分法的中间值
int middle=(begin+end)/2;
// 使用while循环,条件是角标
while(begin<=end){
// 若是是数值大于中间值,让起始角标改值
if(i>arr[middle]){
begin=middle+1;
}
if(i==arr[middle]){
return middle;
}
// 若是是数值小于中间值,让结束角标改值
if(i<arr[middle]){
end=middle-1;
}
// 给中间值赋值
middle=(begin+end)/2;
}
// 说明数组中没有此值
return -1;
}数组
}
.net