先介绍两种最常用的查找算法
一、顺序查找
顾名思义,顺序查找的意思就是按照顺序一个个进行查找。有序或是无序都可以,效率较低。
//顺序查找,返回对应元素下标,若找不到返回-1
public static int search(int[] a, int key) {
for (int i = 0; i < a.length; i++) {
if (a[i] == key)
return i;
}
return -1;
}
二、二分查找
二分法查找适用于数据量大的数据查找,但前提条件是数据必须是有序的,他的原理是先和中间的比较,如果等于就直接返回,如果小于就在前半部分继续使用二分法进行查找,如果大于则在后半部分继续使用二分法进行查找,递归实现。
private static int recursiveFind(int[] arr,int start,int end,int searchKey){
if(arr.length == 0){
return -1;
}
if (start <= end) {
int middle = (start+end)/2;
if (searchKey == arr[middle]) {
return middle;
} else if (searchKey < arr[middle]) {
return recursiveFind(arr, start, middle - 1, searchKey);
} else {
return recursiveFind(arr, middle + 1, end, searchKey);
}
} else {
return -1;
}
}
以上!