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

来源:互联网 发布:明星字体软件 编辑:程序博客网 时间:2024/06/06 01:54
package com.lrq;import java.util.Arrays;import javax.naming.BinaryRefAddr;/** *  * @author 李瑞琦 * 二分查找法的前提是这组序列得是有序的 * */public class TestTwoPointSearch {    public static void main(String[] args) {        // 声明并赋值需要查找的数字        int searchNamber = 666;        // 声明一个20的数组        int[] nums = new int[20];        // 动态往数组里面存值        for (int i = 0; i < nums.length; i++) {            nums[i] = (int) (Math.random() * 1000);        }        // 排序        Arrays.sort(nums);        // 调用Array的toString方法控制台打印        // System.out.println(Arrays.toString(nums));        binarySearch(nums, searchNamber);    }    // 二分查找法的方法    public static int binarySearch(int[] nums, int searchNamber) {        // 定义数组的下标        int left = 0;        int right = nums.length - 1;        int middle = 0;        // while循环判断(前提是left<=right)        while (left <= right) {            middle = (left + right) / 2;            System.out.println(left + "\t" + right + "\t" + middle);            // 判断            if (nums[middle] > searchNamber) {                right = middle - 1;            } else if (nums[middle] < searchNamber) {                left = middle + 1;            } else {                return nums[middle];            }        }        return -1;    }}