public class GetIndexOfArr {
public static int getIndex(int[] arr,int key){
for(int i=0;i<arr.length;i++){
if(arr[i]==key)
return i;
}
return -1;
}
//折半查找,前提是数组有序
public static int BinarySearch(int[] arr,int key){
int low=0,high=arr.length-1,mid;
while(low<high){
mid=(low+high)>>1;
if(arr[mid]<key){
low=mid+1;
}else if(arr[mid]>key){
high=mid-1;
}else {
return mid;
}
}
return -1;
}
public static void main(String[] args){
int[] a={3,2,1,2,4,5,9};
//int res=getIndex2(a,2);
int res=BinarySearch(a,2);
System.out.println(res);
}
}
练习:
一有序数组,想要将一个元素插入到该数组中,还要保证该数组是有序的,获取该元素在数组中的位置
思路:折半查找位置
public static int getIndex2(int[] arr,int key){
int low=0,high=arr.length-1,mid;
while(low<high){
mid=(low+high)>>1;
if(arr[mid]<key){
low=mid+1;
}else if(arr[mid]>key){
high=mid-1;
}else
return mid;
}
return low;
}