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)

  • 相关阅读:
    hdu 5918(强行水过去..正解KMP)
    hdu 5914(斐波拉契数列)
    hdu 5912(迭代+gcd)
    bzoj 2819(DFS序+树状数组+博弈+lca)
    BestCoder #88(1001 1002)
    hdu 5468(dfs序+容斥原理)
    hdu 5692(dfs序+线段树,好题)
    dfs序题目练习
    csu 1806 & csu 1742 (simpson公式+最短路)
    LuoGuP3774:[CTSC2017]最长上升子序列
  • 原文地址:https://www.cnblogs.com/bigdata-stone/p/10463954.html
Copyright © 2011-2022 走看看