zoukankan      html  css  js  c++  java
  • 二分查找(折半查找)

     1 package cn.stringbuffer.com;
     2 
     3 public class ErFenselect {
     4 
     5     public static void main(String[] args) {
     6         // TODO Auto-generated method stub
     7         // 定义一个数组元素
     8         int[] arr = { 11, 22, 33, 44, 55, 66, 77, };
     9         int index = getindex(arr, 33);
    10         System.out.println(index);
    11         // 测试数组元素中如果没有这个元素
    12         int index2 = getindex(arr, 333);
    13         System.out.println(index2);
    14 
    15     }
    16 
    17     public static int getindex(int[] arr, int value) {
    18         // 定义最大索引等于数组长度-1
    19         int max = arr.length - 1;
    20         // 定义最小索引为0开始
    21         int min = 0;
    22         // 计算中间索引
    23         int mid = (max + min) / 2;
    24         while (arr[mid] != value) {// 当中间索引的值不等于传进来的参数
    25             if (arr[mid] > value) {// 如果中间索引大于传进来的参数
    26                 max = mid - 1;// 最大索引值等于中间索引-1
    27             } else if (arr[mid] < value) {// 如果中间值小于传进来的参数 向右边寻找
    28                 min = mid + 1;// 最小值等于中间值+1,向右边寻找
    29             }
    30             if (min > max) {// 有的时候可能传入的数字不存在数组元素中,当mid的值都超过最大的索引值的时候
    31                 return -1;// 例如: int index2=getindex(arr, 333);
    32 
    33             }
    34             mid = (max + min) / 2;// 然后依次循环
    35         }
    36         return mid;// 返回mid的值
    37     }
    38 
    39 }
  • 相关阅读:
    这些诗词你知道一句,却不知全诗!
    二十二、事件绑定及深入
    二十一、事件对象
    二十、事件入门
    十九、动态加载脚本和样式
    十八、DOM元素尺寸和位置
    十七、DOM操作表格及样式
    十六、DOM进阶
    十五、DOM基础
    正确使用volatile场景--状态标志
  • 原文地址:https://www.cnblogs.com/yschung/p/9274709.html
Copyright © 2011-2022 走看看