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 }
  • 相关阅读:
    循环链表问题
    非常有用的编程学习网站
    我的单例模式(C++)
    C# xml解析
    设计模式趣解
    简单工厂(C++)
    贝塞尔曲线 原理
    C++ 1.#QNAN0;1.#QNAN0
    [NOI2018]屠龙勇士 excrt
    [NOI.AC#30]candy 贪心
  • 原文地址:https://www.cnblogs.com/yschung/p/9274709.html
Copyright © 2011-2022 走看看