package binarysearch;
import java.util.Arrays;
//二分查找
public class Test1 {
public static void main(String[] args) {
int[] numbers= {1,2,3,4,5,7,8,22,33};
int i = binaySort(numbers, 0, numbers.length -1, 22);
System.out.println(i);
}
public static int binaySort(int[] s,int left,int right,int value){
while (right>=left){
int mid=(right+left)/2;
if (value==s[mid]){
return mid;
}else if (s[mid]>value){
right=mid-1;
}else{
left=mid+1;
}
}
return -1;
}
}
下面是二分查找到第一个相同元素,上面的代码无法定位到第一个相同元素
//二分查找
public class Test1 {
public static void main(String[] args) {
int[] numbers= {1,2,3,4,5,8,8,22,33};
int i = binaySort(numbers, 0, numbers.length -1, 8);
System.out.println(i);
}
public static int binaySort(int[] s,int left,int right,int value){
while (right>=left){
int mid=(right+left)/2;
if (value==s[mid]){
if ((mid == 0) || (s[mid - 1] != value)) {
return mid;
}else{
right = mid - 1;
}
}else if (s[mid]>value){
right=mid-1;
}else{
left=mid+1;
}
}
return -1;
}
}