从头遍历:
没有约束条件
/*数组元素的查找方法*/
public static int getIndex(int[] arr,int key){
for(int i=0;i<arr.length;i++){
if(arr[i]==key){
return i; // 查找到该元素返回该元素在数组中的索引
}
}
return -1; // 没有查找到该元素返回-1
}
折半查找:
折半查找可以提高查找效率,但是必须要保证该数组是有序的数组。
第一种方式:
// 折半查找:前提条件该数组内的数据必须是有序的
public static int halfSearch(int[] arr,int key){
int min,max,mid;
min=0; // 数组最小索引值
max=arr.length-1; // 数组最大索引值
mid=(min+max)/2; // 数组中间索引值
while(arr[mid]!=key){
if(arr[mid]>key){
max=mid-1;
}
if(arr[mid]<key){
min=mid+1;
}
// 查找完毕,该数组没有该元素返回-1
if(min>max){
return -1;
}
mid=(min+max)/2;
}
return mid;
}
第二种方式:
// 折半查找:前提条件该数组内的数据必须是有序的
public static int halfSearch_2(int[] arr,int key){
int min=0,max=arr.length-1,mid;
while(min<=max){
mid=(min+max)>>1;
if(key>arr[mid]){
min=mid+1;
}
else if(key<arr[mid]){
max=mid-1;
}
else{
return mid;
}
}
return -1;
}