二分查找只要把查找边界的定义明确,再定义好查找结束的条件。就可以很简单地理解了。
Java代码:public class BinarySearch {
/**
* 查找
* @param sortedArray 已排序好的数组
* @param key 需要查找的key
* @return key 所在的位置
*/
public static <T extends Comparable<T>> int search(T[] sortedArray, T key) {
// 在[lo..hi]范围查找
int lo = 0, hi = sortedArray.length - 1;
while (lo <= hi) {
int mid = lo + (hi - lo) / 2; // 防止int越界bug
int cmp = key.compareTo(sortedArray[mid]);
if (cmp < 0) hi = mid - 1;
else if (cmp > 0) lo = mid + 1;
else return mid;
}
return -1; // 如果没有找到就返回-1。
}
}
需要注意的是求
mid
时候的int越界问题。
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦