您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

Java的二分查找实现原理及代码实现

2024/3/27 5:13:07发布23次查看
1.二分查找步骤描述
(1)首先确定整个查找区间的中间位置 mid = ( left + right )/ 2
(2)用待查关键字值与中间位置的关键字值进行比较;
若相等,则查找成功
若大于,则在后(右)半个区域继续进行折半查找
若小于,则在前(左)半个区域继续进行折半查找
(3)对确定的缩小区域再按折半公式,重复上述步骤。
最后,得到结果:要么查找成功, 要么查找失败。折半查找的存储结构采用一维数组存放。 折半查找算法举例
2.要求
(1)必须采用顺序存储结构。
(2)必须按关键字大小有序排列。
3.实例
public class demo {     public static void main(string[] args) {        int[] arr={-1,0,3,5,9,12};//查找的数组        int searchnum=13;//查找的目标数        arrays.sort(arr);         int resultone=binarysearchone(arr,searchnum,0,arr.length-1);        system.out.println(resultone);         int resulttwo=binarysearchtwo(arr,searchnum);        system.out.println(resulttwo);    }     /**     * 递归实现     * @param arr     * @param searchnum     * @param start     * @param end     * @return     */    public static int binarysearchone(int[] arr,int searchnum,int start,int end){        if(start>end)            return -1;        int middle=(start+end)/2;        if(searchnum<arr[middle]) return binarysearchone(arr,searchnum,start,middle-1); else if(searchnum>arr[middle])            return binarysearchone(arr,searchnum,middle+1,end);        else            return middle;    }     /**     * 非递归实现     * @param arr     * @param searchnum     * @return     */    private static int binarysearchtwo(int[] arr, int searchnum) {        int start=0;        int end=arr.length-1;        while(start<=end){ int middle=(start+end)/2; if(searchnum<arr[middle]) end=middle-1; else if(searchnum>arr[middle])                start=middle+1;            else                return middle;        }        return -1;    }}
以上就是java的二分查找实现原理及代码实现的详细内容。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product