您的位置:首页 > 编程语言 > Java开发

二分搜索(java)

2017-06-12 20:27 176 查看
思路:

1 先将输入的数组排序

2 设置中间值mid=(low+high)/2

3 根据中间值将数组分成三部分:(low, mid-1)(mid)(mid+1, high)

4 如果要找的值等于mid,返回中间值

5 如果要找的值小于mid,递归搜索左边的部分(low, mid-1)

6 如果要找的值大于mid,递归搜索右边的部分(mid+1, high)

import java.util.Scanner;
public class Test{
public static void main(String[] args) {
Scanner inp=new Scanner(System.in);
int n=inp.nextInt();
int a[]=new int
;
for(int i=0;i<n;i++)a[i]=inp.nextInt();
SSort(a);
int b=inp.nextInt();
System.out.println(search(a,0,n-1,b));
}
public static int search(int a[],int low,int high,int b){
if(low<=high){
int mid=(low+high)/2;
if(b==a[mid])return mid;
if(b<a[mid])return search(a, low, mid-1, b);
if(b>a[mid])return search(a, mid+1, high, b);
}
return -1;
}
public static void SSort(int a[]){
int temp=0;
for(int i=a.length-1;i>0;i--){
for(int j=0;j<i;j++){
if(a[j+1]<a[j]){
temp=a[j+1];
a[j+1]=a[j];
a[j]=temp;
}
}
}
}
}


4000
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: