2018-01-22

 

1 顺序查找

就是一个一个依次查找

2 二分查找

二分查找(Binary Search)也叫作折半查找。

二分查找有两个要求,

  • 一个是数列有序,
  • 另一个是数列使用顺序存储结构(比如数组)。
/**
 * 二分查找
 */
public class BinarySearch {

    public static void main(String[] args)
    {
        int[] arr=new int[]{1,2,3,5,6,6,8,9};
        BinarySearch binarySearch=new BinarySearch(arr);
        System.out.println(binarySearch.searchRecursion(5));
        System.out.println(binarySearch.searchRecursion(4));
        System.out.println(binarySearch.searchRecursion(6));
        System.out.println(binarySearch.search(5));
        System.out.println(binarySearch.search(7));
        System.out.println(binarySearch.search(6));
    }

    private int[] arr;

    public BinarySearch(int[] arr)
    {
        this.arr=arr;
    }

    public int searchRecursion(int target)
    {
       return searchRecursion(target,0,arr.length-1);
    }

    private int searchRecursion(int target,int begin,int end)
    {
        if(begin<=end)
        {
            int mid=(begin+end)/2;
            if(arr[mid]==target) return mid;
            if(arr[mid]>target)
                return searchRecursion(target,begin,mid-1);
           else
                return searchRecursion(target,mid+1,end);
        }
        return -1;
    }

    private int search(int target)
    {
        int begin =0;
        int end=arr.length-1;
        while(begin<=end)
        {
            int mid=(begin+end)/2;
            if(arr[mid]==target) return mid;
            if(arr[mid]>target) end=mid-1;
            else begin=mid+1;
        }
        return -1;
    }
}
View Code

相关文章:

  • 2022-01-05
  • 2021-10-14
  • 2021-12-08
  • 2022-12-23
  • 2022-12-23
  • 2021-12-03
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-07-06
  • 2021-06-29
  • 2022-12-23
  • 2021-11-14
相关资源
相似解决方案