二分搜索
1. 问题描述
给定已经排序好的n个元素a[0:n-1],现要在这n个元素中找出特定的元素x。
2. 思路分析
二分搜索算法的基本思想是将n个元素分成个数大致相同的两半,取a[n/2]与x进行比较,如果x=a[n/2],则找到x,算法终止。如果x>a[n/2],则只需在数组a的右半部分搜索即可,否则在数组左半部继续搜索x。
3. 代码实现
public class Middle {
public static void main(String[] args) {
int a[]= {3,5,8,9,12,16,20,25};
int s=9;
int index=mid(a,s,8);
if(index==-1) {
System.out.println("no exist");
}
else {
System.out.println(index);
}
}
private static int mid(int[] a, int s, int n) {
int left,right;
left=0;right=n-1;
while(left<=right) {
int middle=(left+right)/2;
if(a[middle]==s) {
return middle;
}
else if(s<a[middle]) {
right=middle-1;
}
else {
left=middle+1;
}
}
return -1;
}
}