二分查找(java)

二分查找又称折半查找,是一种效率比较高的查找算法。

二分查找的前提条件:

1.按照顺序结构存贮

2.数据是有序的

基本原理:

1.选取一个mid=(low+high)/2值,使其与key值比较;

2.若key<nums[mid],则使数组最后一个元素下标high移到mid-1;

3.若key>nums[mid],则使数组第一个元素下标low移到mid+1;

4.若key==nums[mid],则返回mid,结束循环;

5.每次循环开始后high或者low的值都会改变,所以mid的值也一直会刷新;

6.若循环完毕,并未找到给定的key值,则return    -1;

代码演示:
public class binarySearch {
public static int binarysearch(int nums[],int key) {
int low=0;

int high=nums.length-1;

                int mid;

while(low<=high) {
mid=(low+high)/2;          //计算mid的下标,并在每次循环后刷新mid的位置
if(key>nums[mid]) {
low=mid+1;                 //将下界下标移到mid右边,重新定义mid位置
}else if(key<nums[mid]) {
high=mid-1;                //将上届下标移到mid左边,重新定义mid位置
}else {                                  //key与中间值相等的情况
return mid;
}
}
return -1;                                   //执行到这一步,说明并未找到给定的key值
}


public static void main(String[] args) {
int A[]= {1,2,3,4,5,6,7,8,9};
System.out.println(binarysearch(A,7));

}
}

输出结果:

6


阅读更多
个人分类: 查找算法
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭