本文是关于java二分查找的方法
关于二分查找,大家要能知道一点,就是二分查找的条件就是:查找的数组是一个有序数组,关于如何将一个无序数组进行排序,大家可以看下 java冒泡排序 和 java选择排序
好啦,废话不多,上车@_@
所谓的二分查找,就是每次从查询数组的中间的值,判断这个值和要查找的值得大小,相同,那就是要查的值,若中间的值比要查找的值大,那就往左边找,否则就往右边找
上代码:
/**
* 二分查找法
*
* @param arr
* 有序数组
* @param k
* 要查找的数
* @return
*/
public static int BinarySearch(int[] arr, int k) {
int low = 0;
int high = arr.length - 1;
while (low <= high) {
int middle = (high + low) / 2;
if (k == arr[middle]) {
return middle;
} else if (k > arr[middle]) {
low = middle + 1;
} else {
high = middle - 1;
}
}
return -1;
}
判断条件:
low:第一个位置
high:最后一个位置
middle:中间的位置
第一次比较之后,判断所查找的值所处的位置,若是比中间的位置小,就将high的值替换成middle的值,否则就将low的值替换成middle的值,然后除2再进行比较,继续循环,直到结束
查找成功即返回,否则返回-1
好了,原理也是挺简单的,就是要作好 low和high的值得计算
over!!!
欢迎指正!!!