二分查询

技术二分查询 二分查询二分查询:package com.cc;/** * @Author: cc * @Create: 2021/12/20 * 二分查询实现步骤: * 1.前提:有已排序数组A (假设

二进制查询

二分查询:

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

(0)

相关推荐