java二分查找算法的实现过程:
package arithmetic; /** * @author JasonLee * @description java的二分查找(折半查找),前提是数组中的数据是有序的 * 思想:搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或者小于中间元素, * 则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空, * 则代表找不到。这种搜索算法每一次比较都使搜索范围缩小一半。 */ public class DichotomyQuery { public static void main(String[] args) { int arr[] = {1,2,3,4,5,6,7,8}; int i = binSearch(arr, 6); System.out.println(i); } public static int binSearch(int arr[],int key){ // 中间的位置 int mid = arr.length / 2; if(arr[mid] == key){ return mid; } // 开始的位置 int start = 0; // 结束的位置 int end = arr.length - 1; while (start <= end){ // 中间的位置 mid = (end - start) / 2 + start; // 如果输入的数字小于中间的数字,就从中间的位置往前面找 if(key < arr[mid]){ end = mid - 1; // 如果输入的数字大于中间的数字,就从中间的位置往后找 }else if(key > arr[mid]){ start = mid + 1; }else { return mid; } } return -1; } }