二分查找
2016-09-12 20:55
92 查看
注意必须是排好序的数组
方法一:
public static int binarySearch(int[] array,int n){
int start=0;
int end=array.length-1;
int middle=(start+end)/2;
while(start<=end){
if(n>array[middle]){
start=middle+1;
}else if(n<array[middle]){
end=middle-1;
}else{
return middle;
}
}
return -1;
}
方法二:递归
/**
* 递归写法
* @param array
* @param n
* @param start
* @param end
* @return
*/
public static int binarySearch(int[] array,int n,int start,int end){
int middle=(start+end)/2;
if(n>array[end] || n<array[start] || start>end){
return -1;
}
if(n>array[middle]){
return binarySearch(array, n, middle+1, end);
}else if(n<array[middle]){
return binarySearch(array, n, start, middle-1);
}else{
return middle;
}
}
方法一:
public static int binarySearch(int[] array,int n){
int start=0;
int end=array.length-1;
int middle=(start+end)/2;
while(start<=end){
if(n>array[middle]){
start=middle+1;
}else if(n<array[middle]){
end=middle-1;
}else{
return middle;
}
}
return -1;
}
方法二:递归
/**
* 递归写法
* @param array
* @param n
* @param start
* @param end
* @return
*/
public static int binarySearch(int[] array,int n,int start,int end){
int middle=(start+end)/2;
if(n>array[end] || n<array[start] || start>end){
return -1;
}
if(n>array[middle]){
return binarySearch(array, n, middle+1, end);
}else if(n<array[middle]){
return binarySearch(array, n, start, middle-1);
}else{
return middle;
}
}
相关文章推荐
- 二分查找
- 240. Search a 2D Matrix II(二分查找)
- 二分,枚举+查找(子序列,LA 2678)
- STL算法------查找6(二分查找,包含查找)
- 二维数组的二分查找
- 90%程序员写不出无BUG的二分查找程序?
- 查找算法之顺序查找和二分查找
- 二分查找算法变体在实际项目中的应用
- 二分查找与冒泡排序
- c++实现二分查找 递归和非递归
- 题目1 : 二分·二分查找
- 二分查找
- 二分查找算法与快速排序
- HDU 2141 can you find it?【二分查找】
- poj_1840 Eqs(二分查找 / 哈希)
- 二分查找变体之循环有序数组找分界点
- 【剑指offer】二分查找二维数组
- 算法导论第2章(3) 二分查找 binary search
- java冒泡,选择排序及折半(二分)查找
- 算法题:二分查找