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

    0.关于二分查找:

      1.二分查找作为一种常见的查找算法,将原本的线性时间提升到了对数的范围,大大缩短了搜索的时间,但是有一个前提,那就是必须是在有序的数据中进行查找。

      2.算法思想:二分查找又叫做折半查找。每次取出中间未知的值与待查的关键字进行比较,如果中间位置的关键字比待查关键字大,则在前半部分循环这个查找的过程,如果中间关键字比待查关键字小,那么就在后半部分循环查找过程。知道查找到了为止,否则序列中没有待查关键字

    1.最基本的二分查找

    import java.util.Scanner;
    
    public class binarySearch {
        public static void main(String[] args) {
           //下面作为用力输入进行测试
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入一个有序数组容量:");
            int a = sc.nextInt();
            System.out.println("请输入一个有序数组:");
            int[] b = new int[a];
            for (int i = 0 ; i < a ; i++){
                b[i]=sc.nextInt();
            }
            System.out.println("请输入要进行查找的值:");
            int target = sc.nextInt();
            System.out.println("搜索结果:"+search(b,target));
    
        }
        public static  int search(int[] A,int target){
            int low = 0;
            int high=A.length-1;
            int mid;
            while (low<=high){
                mid = (low+high) /2;
                if(A[mid]==target){
                    return mid;
                }else if(A[mid]>target){
                    high=mid-1;
                }else {
                    low = mid +1;
                }
            }
            return -1;
        }
    }

    时间复杂度为O(logn)

  • 相关阅读:
    [SCOI2008]奖励关
    [HNOI2015]落忆枫音
    [HAOI2012]高速公路
    [HNOI2012]集合选数
    A. 【UNR #2】积劳成疾
    整体二分
    [HNOI2015]亚瑟王
    [SDOI2010]星际竞速
    [SDOI2010]地精部落
    [SDOI2014]数数
  • 原文地址:https://www.cnblogs.com/bigdata-stone/p/10463954.html
Copyright © 2011-2022 走看看