Java数组二分查找(思路及代码实现)

首先二分查找是一个具有前提的算法,前提就是必须这个数组是有序的,如果你是无序的要么你使用别的算法或者你排好序了再用.(提一嘴有些人叫他折半查找都是一样的)

思路:既然是二分查找首先我们先确定中间值,因为一半儿一半儿嘛(要不然咋叫二分查找), 中间值 = (开始元素的下标 + 结束元素的下标)/2

这时候把你输入的元素和这个中间值比较,如果大那就在右半部分,反之亦然.当然如果你输入要查找的值刚好在中间,恭喜,幸运儿诞生了

这里我是直接封装了一个方法

import java.util.Arrays;
import java.util.Scanner;

public class ArrayUtilsFound {
   public static int[] HalfFound(int[] array){
      Arrays.sort(array);
      Scanner scan = new Scanner(System.in);
      int begin = 0;
      int end = array.length - 1;
      int middle = 0;
      int num = scan.nextInt();

      boolean flag = false;
      while(begin <= end){
         middle = (begin + end)/2;
         if (array[middle] == num) {
            flag = true;
            break;
         } else if (array[middle] > num) {
            end = middle - 1;
            //-- 这里是中间值比你输入的大,在左边,所以要中间的元素-1,因为你中间的元素已经比较过了
         } else {
            begin = middle + 1;
            //-- 中间值比输入的值小,在右边,所以要+1因为要在右边进行二分查找,而中间值不参与
         }
      }
      if (flag) {
         System.out.println("中间的值为:	" + middle);
         
      } else {
         System.out.println("不存在");
      }

      scan.close();
      return array;
   }
}
经验分享 程序员 微信小程序 职场和发展