二分查找框架
1. 简单二分查找
int binary_search(int[] array, int target){
int left = 0, right = array.length - 1;
while(left <= right){
int mid = left + (right - left)/2;
if(array[mid] > target){
right = mid - 1;
}else if(array[mid] < target){
left = mid + 1;
}else if(array[mid] == target){
return mid;
}
}
return -1;
}
2. 查找左侧边界的二分查找
int left_bound(int[] array, int target){
int left = 0, right = array.length - 1;
while(left <= right){
int mid = left + (right - left)/2;
if(array[mid] > target){
right = mid -1;
}else if(array[mid] < target){
left = mid + 1;
}else if(array[mid] == target){
right = mid -1;
}
}
if(left >= array.length || array[left] != target){
return -1;
}
return left;
}
3. 查找右侧边界的二分查找
int right_bound(int[] array, int target){
int left = 0, right = array.length - 1;
while(left <= right){
int mid = left + (right - left)/2;
if(array[mid] > target){
right = mid - 1;
}else if(array[mid] < target){
left = mid + 1;
}else if(array[mid] == target){
left = mid + 1;
}
}
if(right < 0 || array[mid] != target){
return -1;
}
return right;
}
后序
- 我是一名大三本科生,专业是软件工程【一本】。目前,正在准备找实习以及秋招,意向岗位是Java后端开发工程师。为此,在码云托管了一个项目,以整理我所有所学知识。涉及内容:计算机网络、操作系统、Java基础、主流Java后端框架、设计模式、Web前端框架等内容。欢迎大家访问我的开源项目编程之路
- 码云地址:https://gitee.com/alizipeng/the-way-of-programming
- 以上内容均记载在我的开源项目中