zoukankan      html  css  js  c++  java
  • 二分查找



    /**
    * @program:
    * @description:
    * @author: Jay
    * @create: 2020-09-21 19:17
    **/
    public class TwoSearch {
    /**
    * 不使用递归的二分查找
    * title:commonBinarySearch
    *
    * @param arr
    * @param key
    * @return 关键字位置
    */
    public static int commonBinarySearch(int[] arr, int key) {
    int low = 0;
    int high = arr.length - 1;
    int middle = 0; //定义middle

    if (key < arr[low] || key > arr[high] || low > high) {
    return -1;
    }

    while (low <= high) {
    middle = (low + high) / 2;
    if (arr[middle] > key) {
    //比关键字大则关键字在左区域
    high = middle - 1;
    } else if (arr[middle] < key) {
    //比关键字小则关键字在右区域
    low = middle + 1;
    } else {
    return middle;
    }
    }

    return -1; //最后仍然没有找到,则返回-1
    }

    public static void main(String[] args) {

    int[] arr = {1, 3, 5, 7, 9, 11};
    int key = 5;
    //int position = recursionBinarySearch(arr,key,0,arr.length - 1);

    int position = commonBinarySearch(arr, key);

    if (position == -1) {
    System.out.println("查找的是" + key + ",序列中没有该数!");
    } else {
    System.out.println("查找的是" + key + ",找到位置为:" + position);
    }

    }

    }
  • 相关阅读:
    axis2学习笔记
    一个奇怪的数组越界报错
    zk实现分布式锁
    springBoot配置双数据源
    oracle查询
    maven项目打包
    linux修改yum源为阿里云
    kafka入门
    大话设计模式读书笔记(中介者模式)
    大话设计模式读书笔记(职责链模式)
  • 原文地址:https://www.cnblogs.com/jay-wu/p/13707671.html
Copyright © 2011-2022 走看看