搜索算法(折半查询)

来源:互联网 发布:教程网源码带后台 编辑:程序博客网 时间:2024/05/21 09:06

前言

今天做一个例题 , 用到了折半查询这个算法 , 所以记录一下.

  • 折半查询的效率非常高 , 而且学习起来也非常简单 , 非常容易理解 .

代码

代码利用了泛型 , 也就是说可以支持任意类型的数组进行查询 .

  • 结合代码看图 , 就非常容易理解了.
  • mid表示中间的索引 , key是搜索的值.

分析图

public class BinSearch<T extends Comparable> {//继承于Comparable才可以使用compareTo进行比较.    private T[] arr;    public BinSearch(T[] arr) {    this.arr = arr;    }    public int search(T key ) {    int low = 0;    int high = arr.length;    int mid = 0;        while(low <= high ) {        mid = (low + high ) / 2;  //先获取中间的位置        if(key.compareTo(arr[mid]) > 0 ) {        low = mid + 1;           //说明在中间右边        }else if (key.compareTo(arr[mid]) < 0 ){        high = mid - 1;          //说明在中间左边        }else {        return mid;        }    }}
原创粉丝点击