查找算法有哪些?

时间:2025-03-14 08:51:41

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;
}