二分查找
数据结构整理目录>>>
基本介绍(非递归)
- 二分查找只适用于从有序的数列中进行查找(比如数字和字母等),将数列排序后再进行查找
- 二分查找法只适用于从有序的数列中进行查找,(比如数字和字母等),将数列排序后再进行查找
- 二分查找法的运行时间为对数O(lo2n),即查找到需要的目标位置最多只需要log2n步数,假设从[0,99]的队列(100个数,即n=100)中寻找到目标数30,则需要查找部署为l0g2100,即最多只需要查找7次(2^6<100)
代码实现
package L十大算法;
public class BinarySearchNoRecur {
public static void main(String[] args) {
int[] arr = {1,3,8,10,11,67,100};
int index = binarySearch(arr,1);
System.out.println(index);
}
public static int binarySearch(int[] arr,int target){
int left = 0;
int right = arr.length-1;
while(left<=right){
int mid = (left+right)/2;
if(arr[mid]==target){
return mid;
}else if(arr[mid]>target){
right = mid;
}else{
left = mid+1;
}
}
return -1;
}
}