package day04.Work; public class Binary { //使用二分查找 // int[] arr = {1,3,4,5,6,8,9,12,15,17,26,28,27} private static int chazhao(int[] arr, int i) { //左边为left int left = 0; //右边为数组-1 int right = arr.length-1; //mid为中间值变量 int mid; //当左边界开始大于右边界的时候就停止循环,left代表左边界,arr.length-1代表右边界 //如果左边小于等于右边那中间位置就是左边+右边除以2 while(left <= right){ //中间位置 mid = (left+right) / 2; if (arr[mid] == i){ return mid + 1; //向左查找,待查关键字(num)小于中间值。这时候左边界是不需要动的 // 右边界应是中间位置的上一位,即 mid - 1 }else if (arr[mid] > i){ right = mid - 1; //向右查找,待查关键字(num)大于中间值。这时候右边界是不需要动的 // 左边界应是中间位置的下一位,即 mid + 1 }else{ left = mid +1; } } //如果没有查到则返回-1 return -1; } public static void main(String[] args) { int[] arr = {1,3,4,5,6,8,9,12,15,17,26,27,28}; int nmu = chazhao(arr,29); System.out.println(nmu); } }
java二分查找(对半查找)
最新推荐文章于 2024-11-15 18:38:47 发布