数据结构折半查找例题_数据结构中的折半查找是怎么回事?谁能给个具体例子,谢谢了。...

展开全部

你好 :

这是我之前写的代码希望能对你有所帮助:

思路:

1. 务必是有32313133353236313431303231363533e78988e69d8331333365643661序数组 (重点!)

百度百科:(这里偷个懒)半查找法也称为二分查找法,它充分利用了元素间的次序关系,采用分治策略,可在最坏的情况下用O(log n)完成搜索任务。它的基本思想是,将n个元素分成个数大致相同的两半,取a[n/2]与欲查找的x作比较,如果x=a[n/2]则找到x,算法终止。如 果xa[n/2],则我们只要在数组a的右 半部继续搜索x。

这个代码输入为有序数组 , 寻找的值

返回:如果找到返回所在坐标,如果没找到返回最小的整型/**

*

* @param arr 有序数组

* @param target 查找值

* @return   找到就返回坐标位置,找不到就返回最小值。

* @throws Exception

* @dec 二分查找的非递归算法 ,

* 时间复杂度: o log(n)   n  n/2  n/4  假设 k次找到 。 n/(2的k次方) 即 2的k次方=n 所以k= logn

*

*/

public static int  binarySearch(int arr[], int target) throws Exception {

if(arr==null) {

throw new Exception("ARR IS NULL");

}

if(arr.length<=0) {

throw new Exception("length  is illegal");

}

int low = 0;

int high = arr.length-1;

while(low<=high) {

if(target==arr[(low+high)/2]) {

return (low+high)/2;

}else if(target>arr[(low+high)/2]) {

low = (low+high)/2 +1 ;

}else {

high = (low+high)/2 -1;

}

}

return Integer.MIN_VALUE;

}

如果有问题欢迎继续交流指教!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值