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

    画图分析:

    代码分析:

     1 /*
     2  * 查找:
     3  *         基本查找:数组元素无序(从头找到尾)
     4  *         二分查找(折半查找):数组元素有序
     5  * 
     6  * 分析:
     7  *         A:定义最大索引,最小索引
     8  *         B:计算出中间索引
     9  *         C:拿中间索引的值和要查找的值进行比较
    10  *             相等:就返回当前的中间索引
    11  *             不相等:
    12  *                 大    左边找
    13  *                 小    右边找
    14  *         D:重新计算出中间索引
    15  *             大    左边找
    16  *                 max = mid - 1;
    17  *             小    右边找
    18  *                 min = mid + 1;
    19  *         E:回到B
    20  */
    21 public class ArrayDemo {
    22     public static void main(String[] args) {
    23         //定义一个数组
    24         int[] arr = {11,22,33,44,55,66,77};
    25         
    26         //写功能实现
    27         int index = getIndex(arr, 33);
    28         System.out.println("index:"+index);
    29         
    30         //假如这个元素不存在后有什么现象呢?
    31         index = getIndex(arr, 333);
    32         System.out.println("index:"+index);
    33     }
    34     
    35     /*
    36      * 两个明确:
    37      * 返回值类型:int
    38      * 参数列表:int[] arr,int value
    39      */
    40     public static int getIndex(int[] arr,int value){
    41         //定义最大索引,最小索引
    42         int max = arr.length -1;
    43         int min = 0;
    44         
    45         //计算出中间索引
    46         int mid = (max +min)/2;
    47         
    48         //拿中间索引的值和要查找的值进行比较
    49         while(arr[mid] != value){
    50             if(arr[mid]>value){
    51                 max = mid - 1;
    52             }else if(arr[mid]<value){
    53                 min = mid + 1;
    54             }
    55             
    56             //加入判断
    57             if(min > max){
    58                 return -1;
    59             }
    60             
    61             mid = (max +min)/2;
    62         }
    63         
    64         return mid;
    65     }
    66 }
  • 相关阅读:
    DockerFile 解析
    Docker 容器数据卷
    Docker 镜像
    Docker 常用命令
    Docker 安装
    vue全站式笔记
    接口环境配置
    前端跨域的三种方式
    vue+axios 模拟后台返回数据的三种方式:本地创建json、easymock平台、mockjs
    cookie、sessionStorage与localStorage是什么?
  • 原文地址:https://www.cnblogs.com/jiangjianzhu/p/5799237.html
Copyright © 2011-2022 走看看