//定义key第一次出现的位置!如果返回-1说明不存在!
public static int getIndex(int[] arr,int key)
{
for(int x=0;x<arr.length;x++){
if(arr[x]==key)
return x;
}
return -1;
}
//折半查找提高效率,但必须保证数组有序!
public static int halfSeach(int[] arr,int key)
{
int min,max,mid;
min=0;
max=arr.length-1;
mid=(min+max)/2;
while(key!=arr[mid]){ //查询中间值不等于key为条件
if(key>arr[mid])
min=mid+1;
else if(key<arr[mid])
max=mid-1;
if(min>max)
return -1;
mid=(mid+max)>>1;
}
return mid;
}
//折半的第二种方式:
public static int halfSeach_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;
}