您的位置:首页 > 其它

二分查找

2015-09-03 16:42 429 查看
import java.util.Arrays;
/**
*
* @author GDL
* @time 2015-09-03 16:39
*
*/
public class Search {

public static void main(String[] args) {
//写一个数组
int [] a={2,1,8,9,4,3,66,51,7,6,5,0};
//打印一遍
for (int i = 0; i < a.length; i++) {
System.out.print(a[i]);
}
System.out.println("");
//排序
Arrays.sort(a);
//打印排序后一遍
for (int i = 0; i < a.length; i++) {
System.out.print(a[i]);
}
System.out.println("");
//显示位置
System.out.println(searchMethod1(a, 51));
System.out.println(searchMethod2(a, 51, 0, a.length-1));

}
//普通二分查找
static int searchMethod1(int [] a,int n) {
int left=0;
int right=a.length-1;
int mid=(left+right)/2;
while (left<=right) {
mid=(left+right)/2;
if(n==a[mid]){
return mid;
}else if(n<a[mid]){
right=mid-1;
}else{
left=mid+1;
}
}
return -1;
}
//递归二分查找
static int searchMethod2(int [] a,int n,int left,int right) {
int mid=(left+right)/2;
if(n<a[left]||n>a[right]||left>right){
return -1;
}
if(n<a[mid]){
return searchMethod2(a, n, left, mid-1);
}
else if(n>a[mid]){
return searchMethod2(a, n, mid+1, right);
}else{
return mid;
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: