欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

算法_二分查找(折半查找)

程序员文章站 2024-03-20 17:49:22
...

分查找(折半查找)

package com.xwl;
/**
 * 二分查找
 * @author Administrator
 */
public class Test_erfenchazhao {
    public static void main(String[] args) {
        //定义一个数组
        int[] arr = new int[] {12,13,25,64,87};
           System.out.println(search(arr, 12));
           System.out.println(search(arr, 13));
           System.out.println(search(arr, 25));
       }
       //查询   数组给我     查询的key 给我
       public static int search(int[] arr, int key) {
           //定义开始下标 start
           int start = 0;
           //定义结束下标 end
           int end = arr.length - 1;
           //循环条件  当结束大于或者等于开始的时候
           while (start <= end) {
               //中间值下标
               int middle = (start + end) / 2;
               //判断如果中间下标对应的中间值大于key 就把中间下标-1赋值给end
               if (key < arr[middle]) {
                   end = middle - 1;

               } else if (key > arr[middle]) {
                   //否者开始下标=中间下标+1
                   start = middle + 1;
               } else {
                   return middle;
               }
           }
           return -1;
       }
    }