public class FindArrays {
/**
* @param 折半查找
*/
public static void main(String[] args) {
// int[] arr = {-32,12,16,24,36,45,59,98};
// int index = getIndex(arr,24);
// System.out.println(index);
int[] arr = {-32,12,16,24,36,45,59,98};
int index = halfSearch(arr,8);
System.out.println(index);
}
/*
* 折半的第二种方式
*/
public static int halfSearch_2(int[] arr,int key){
int min = 0,max = arr.length-1,mid;
while(min<=max){
mid = (max+min)>>1;
if(key>arr[mid]){
min = mid+1;
}else if(key<arr[mid]){
max = mid -1;
}else{
return mid;
}
}
return -1;
}
/*
* 折半查找.必须保证数组是有序的数组。
*/
public static int halfSearch(int[] arr,int key){
int min,max,mid;
min = 0;
max = arr.length-1;
mid = (max+min)/2;
while(arr[mid]!=key){
if(key>arr[mid]){
min = mid+1;
}else if(key<arr[mid]){
max = mid-1;
}
if(min>max){
return -1;
}
mid = (max+min)/2;
}
return mid;
}
/*
*普通查找
*/
//如果出现相同的数字就获取key第一次出现在数组中的位置
public static int getIndex(int[] arr,int key){
for(int x=0;x<arr.length;x++){
if(arr[x]==key){
return x;
}
}
//返回-1表示没有找到
return -1;
}
}
数组(九)
最新推荐文章于 2022-03-27 14:58:11 发布