• java二分查找


    java二分查找

    1.二分查找
    算法思想:又叫折半查找,要求待查找的序列有序。每次取中间位置的值与待查关键字比较,如果中间位置的值比待查关键字大,则在前半部分循环这个查找的过程,如果中间位置的值比待查关键字小,则在后半部分循环这个查找的过程。直到查找到了为止,否则序列中没有待查的关键字。
    2.代码实现

    package com.ls.binarysearch;
    
    import java.util.Arrays;
    import java.util.Scanner;
    
    public class TestBinarySearch {
        public  static void main(String[] args){
        int[] array ={80, 53, 63, 5, 81, 84, 88, 91, 94};
               //对数组a排序
            //Arrays.sort(a)优化的快速排序算方法
            Arrays.sort(array);
            System.out.println("查找的值:");
            int t = new Scanner(System.in).nextInt();
            int i = binarySearch(array, t);
            System.out.println(i);
    
        }
          /**
         * 主要代码
         * @param array
         * @param t
         * @return
         */
        private static int binarySearch(int[] array, int t){
            /**     t=63       mid
             * [8, 53, 63, 76, 81, 84, 88, 91, 94]
             *  lo                             hi
             *  1.定义三个下标变量
             *  lo = 0
             *  hi =a.length-1
             *  mid;
             *  2.当lo<=hi
             *      3.计算中间位置下标存到变量mid
             *      4.如果mid位置值比t小
             *       lo定位到mid+1
             *       5.否则如果mid位置值比t大
             *       hi定位到mid-1
             *       6.否则,返回mid下标值
             * 7.找不到,返回-1,表示找不到
             */
            int lo = 0,mid,hi= array.length-1;
            while (lo<=hi){
                mid=(lo+hi)/2;
                if(array[mid]<t){
                    lo=mid+1;
                }else if (array[mid]>t){
                    hi=mid-1;
                }else {
                    return mid;
                }
            }
            return -1;
        }
    }
    
    
  • 相关阅读:
    ch_6802 車的放置
    ch_POJ2182 Lost Cows
    ch_4201 楼兰图腾
    luogu_P3368【模板】树状数组 2
    门面
    建造者
    模板方法
    状态
    抽象工厂
    工厂方法
  • 原文地址:https://www.cnblogs.com/szls-666/p/12494198.html
Copyright © 2020-2023  润新知