二分查找法(JAVA版)

来源:互联网 发布:马来西亚翻译软件 编辑:程序博客网 时间:2024/05/29 07:15
①非递归/*** srcArray 传入数组* des 目标数据* return 若该数组有对应的数据,则返回其下标位置;否则返回 -1*/public static int BinarySearch(int[] srcArray,int des){int low = 0;//最开始的数据下标int high = srcArray.length-1;//最后一个数据的下标while(low < high){int middle = low + (high - low)/2 ;//此处进行了优化,防止数据越界;若不优化,可以用(low+high)/2表示if(des == srcArray[middle]){return middle;}else if(des < srcArray[middle]){ high = middle-1;}else{ low = middle+1;}}return -1; }


①递归/*** srcArray 传入数组* des 目标数据* start 起始位置下标* end 最后位置下标* return 若该数组有对应的数据,则返回其下标位置;否则返回 -1*/public static int BinarySearch(int[] srcArray , int des, int start,int end){        int middle = start +(end-start)/2;                if(start > end){           return -1;          }    if(des < data[middle]){       return BinarySearch(srcArray,des,start,middle-1);    }else if(des > data[middle]){       return BinarySearch(srcArray,des,middle+1,end);    }else{       return middle;    }}


原创粉丝点击