数据结构-递归

二分法查找

package com.execlib.search;

/**
 * 二分法查找
 */
public class BinarySearch {
    public int search(int[] data,int key){
        return binarySearch(data,key,0,data.length-1);
    }

    public int binarySearch(int[] data,int key, int left, int right) {
        if (left>=right)
            return -1;
        int mid = (left+right)/2;
        if (data[mid]>key){
            right = mid-1;
        }else if (data[mid]<key){
            left = mid+1;
        }else {
            System.out.println("找到数据:index="+mid);
            return mid;
        }
        return binarySearch(data,key,left,right);
    }

    /**
     * 非递归形式二分查找
     * @param data
     * @param key
     * @return
     */
    public int binarySearchNoCycle(int[] data,int key) {
        int left = 0;
        int right = data.length-1;
        int mid = 0 ;
        while (left<=right){
            mid = (left+right)/2;
            if (data[mid]>key){
                right = mid-1;
            }else if (data[mid]<key){
                left = mid+1;
            }else {
                System.out.println("找到数据:index="+mid);
                return mid;
            }
        }
        return -1;
    }

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容