二分查找

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)

posted @ 2019-03-03 09:05  stone1234567890  阅读(1021)  评论(0编辑  收藏  举报