代码实现-java
package binarysearch;
public class BinarySearchNoRecur {
public static void main(String[] args) {
//测试
//创建待查找的数据示例
int[] arr = {1,4,8,10};
//定义待查找的数
int target = 8;
//使用二分查找算法进行查找
int index = binaryserch(arr, target);
System.out.println("index="+index);
}
//二分查找的非递归实现
/**
*
* @param arr 待查找的数组
* @param target 待查找的目标值
* @return 找到返回目标值在数组中的索引,否则返回-1
*/
public static int binaryserch(int[] arr,int target){
//定义左边界和右边界的索引
int left = 0;
int right = arr.length -1;
//循环
while(left <=right){
//求中间值索引
int mid = (left + right) /2 ;
//判断目标值和中间值的大小
if(target > arr[mid]){
left = mid+1; //向右边找
}else if(target == arr[mid]){ //找到,直接返回索引
return mid;
}else { //向左查找
right = mid -1;
}
}
return -1;
}
}
[1]:
韩顺平数据结构与算法