常见的算法-二分查找

介绍

  二分查找,又叫折半查找,要求待查找的序列有序。

  步骤:

  1. 先进行排序;
  2. 每次取中间位置的值,与待查值进行比较;
  3. 如果中间值大于待查值,则选择前半部分再次查找;
  4. 如果中间值小于待查值,则选择后半部分再次查找;
  5. 依次类推直到中间值与待查值相等即可,否则没有要查询的值。

线性检索和二分检索

线性检索和二分检索求 23 的位置

从动态图看出,二分检索比线性检索快。

但是如果查找1的话,反而线性检索比二分检索快,当然这种情况比较少。综合来看二分检索速度大于线性检索

代码实现

import java.util.Arrays;
 
/**
 * 测试二分法查找
 * 二分法适用于已经排好序的数组
 * @author Administrator
 *
 */
public class TestBinarySearch {
    public static void main(String[] args) {
        int[] arr= {30,20,50,10,80,9,7,12,100,40,8};
        Arrays.sort(arr);
        System.out.println(Arrays.toString(arr));
        System.out.println(myBinarySearch(arr,40));
        }
    
    public static int myBinarySearch(int[] arr,int value) {
        int low=0;
        int high=arr.length-1;
        while(low<=high) {
            int mid=(low+high)/2;
            if(value==arr[mid]) {
                return mid;
                }
            if(value>arr[mid]) {
                low=mid+1;    
            }
            if(value<arr[mid]) {
                high=mid-1;
            }
            
        }
        return -1;//没有找到返回-1
    }
    
}

 

posted @ 2020-03-26 16:47  王大军  阅读(387)  评论(0编辑  收藏  举报