二进制查询
二分查询:
package com . cc;
/**
* @Author: cc
* @Create: 2021/12/20
*二分查询实现步骤:
* 1.前提:已经排序了数组A(假设已经排序)
* 2.定义左边界l .右边界R,确定搜索范围,循环执行二分搜索法(3。4步)
* 3.得到中间指标M=Flor((L R)/2)=存在整数超出最大范围的问题,优化为移位运算:M=(L R)1;
* 4.将中间索引的值A[M]与要搜索的值T进行比较。
* A[M]==T表示找到,返回中间索引。
* A[M] T,中间值右边的其他元素都大于T,所以没必要比较。在中间索引左侧查找,设置M- 1为右边界,再查找。
* A[M]T,中间值左侧其他元素均小于T,无需比较。在中间索引的右边找,把M 1设为左边距,再找。
* 5.当没有找到LR时,循环应该结束。
*/
公共类BinarySearch {
公共静态void main(String[]args){ 0
int [] array={1,3,5,6,12,53,65,77,98,123 };
int target=53
int id=binarysearch(数组,目标);
system . out . println(id);
}
public static int binary search(int[]a,int t){ 0
//定义左边距L、右边距R和中间索引m
int l=0,r=a.length - 1,m;
while(l=r){ 0
//计算中间索引(循环内)
m=(l r)1;//Shift操作1相当于除以2。
if(a[m]==t){ 0
返回m;
}否则如果(a[m]t)}
l=m1;
}else {
r=m-1;
}
}
返回-1;
}
}
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/154986.html