[セットトップ]二分検索ターゲット要素インデックス
2072 ワード
package com.zhangry.search;
public class BinarySearch {
public static void main(String[] args) {
int[] arrayForSearch = {1,2,3,4,5,6,7,8,9,10};
int start = 0;
int end = arrayForSearch.length-1;
int target = 3;
System.out.println(target+" : "+binarySearch(arrayForSearch,start,end,target));
}
private static int binarySearch(int[] arrayForSearch,int start,int end,int target){
int current = (start+end)/2;
if(arrayForSearch[current] == target){
return current;
}else if(arrayForSearch[current] > target){
end = current;
return binarySearch(arrayForSearch,start,end,target);
}else if(arrayForSearch[current] < target){
start = current;
return binarySearch(arrayForSearch,start,end,target);
}
return -1;
}
}
package com.zhangry.search;
public class WhileBinarySearch {
/**
*
* @param srcArray
* @param des *
* @return des , -1
*/
public static int binarySearch(int[] srcArray, int des) {
int low = 0;
int high = srcArray.length - 1;
while (low <= high) {
int middle = (low + high) / 2;
if (des == srcArray[middle]) {
return middle;
} else if (des < srcArray[middle]) {
high = middle - 1;
} else {
low = middle + 1;
}
}
return -1;
}
public static void main(String[] args) {
int[] src = new int[] { 1, 3, 5, 7, 8, 9 };
System.out.println(binarySearch(src, 8));
}
}