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