package com.heima.array;

public class Demo2_Array {

/**
         * * A:案例演示
                        * 数组高级二分查找代码
                * B:注意事项
                        * 如果数组无序,就不能使用二分查找。
                                * 因为如果你排序了,但是你排序的时候已经改变了我最原始的元素索引。

*/
        public static void main(String[] args) {
                int[] arr = {11,22,33,44,55,66,77};
                System.out.println(getIndex(arr, 22));
                System.out.println(getIndex(arr, 66));
                System.out.println(getIndex(arr, 88));
        }
        
        /*
         * 二分查找
         * 1,返回值类型,int
         * 2,参数列表int[] arr,int value
         */
        
        public static int getIndex(int[] arr, int value) {
                int min = 0;
                int max = arr.length - 1;
                int mid = (min + max) / 2;
                
                while(arr[mid] != value) {                                        //当中间值不等于要找的值,就开始循环查找
                        if(arr[mid] < value) {                                        //当中间值小于了要找的值
                                min = mid + 1;                                                //最小的索引改变
                        }else if (arr[mid] > value){                        //当中间值大于了要找的值
                                max = mid - 1;                                                //最大的索引改变
                        }
                        
                        mid = (min + max) / 2;                                        //无论最大还是最小改变,中间索引都会随之改变
                        
                        if(min > max) {                                                        //如果最小索引大于了最大索引,就没有查找的可能性了
                                return -1;                                                        //返回-1
                        }
                }
                return mid;
        }
}

最新文章

  1. bootstrap表格
  2. jmeter(九)逻辑控制器
  3. Spark Streaming官方文档学习--下
  4. Java 集合框架 ArrayList 源码剖析
  5. VA自动补全QT
  6. Linux Shell(初识)
  7. MVC之ActionResult
  8. 疯狂Android第一章:Android环境配置以及基本概念
  9. Untiy文档总结(1)-Profiling
  10. ecshop_添加最新评论
  11. 【一天一道LeetCode】#4 Median of Two Sorted Arrays
  12. webpack安装使用
  13. python strip()函数和Split函数的用法总结
  14. bzoj 4589 FWT
  15. EditPlus配置GTK
  16. 【Java】【7】枚举类
  17. ios成长之每日一遍(day 1)
  18. SharpGL学习笔记(五) 视口变换
  19. [CentOS_7.4]Linux安装与网络配置
  20. hdu1176 dp

热门文章

  1. Spring Task 定时任务
  2. [Unity3D]Unity3D游戏开发之连续滚动背景
  3. html5--html实现乘法口诀表
  4. 使用C#开发HTTP服务器系列之实现Get和Post
  5. java对象序列化的理解
  6. ConfigParser模块用法
  7. #!/usr/bin/env ruby 与 #!/usr/bin/ruby 的区别(copy)
  8. Ceph之PG数调整
  9. 机器学习--DIY笔记与感悟--①K-临近算法
  10. PHP中的连贯操作