1、顺序查找
查找算法中顺序查找算是最简单的了,无论是有序的还是无序的都可以,只需要一个个对比即可,但其实效率很低。我们来看下代码
public static int search(int[] a, int key) {
for (int i = 0, length = ; i < length; i++) {
if (a[i] == key)
return i;
}
return -1;
}
2、二分查找
二分法查找适用于大的数据,但前提条件是数据必须是有序的,他的原理是先和中间的比较,如果等于就直接返回,如果小于就在前半部分继续使用二分法进行查找,如果大于则在后半部分继续使用二分法进行查找……我们来看下代码
public static int binarySearch(int[] array, int value) {
int low = 0;
int high = - 1;
while (low <= high) {
// int middle = (low + high) >> 1;
//相比与上面,防止middle可能会出现溢出
int middle = low + ((high - low) >> 1);
if (value == array[middle]) {
return middle;
}
if (value > array[middle]) {
low = middle + 1;
}
if (value < array[middle]) {
high = middle - 1;
}
}
return -1;
}