是否有更好的方法来创建"抽象"线性搜索?

时间:2016-07-02 23:36:17

标签: java search linear-search

所以我试图编写一个可用于大多数非原始数据类型的线性搜索。

以下是我使用的代码:

public static <T> boolean search(Comparable<T> key, T[] array) {
    for(int i = 0; i < array.length; i++) {
        if(array[i].equals(key)) {
            return true;
        }
    }
    return false;
}

我想知道是否有更好的办法,或者更简洁的方式。 N.B。我只是想使用线性搜索算法

由于

2 个答案:

答案 0 :(得分:1)

您可以使用List#contains进行线性搜索。此外,在这种情况下也不需要Comparable

public static <T> boolean search(T needle, T[] haystack) {
    return Arrays.asList(haystack).contains(needle);
}

注意:Arrays.asList会返回数组的List视图。它不会复制。

答案 1 :(得分:-3)

二进制搜索效果惊人!这很简单。

public static <T> boolean search(Comparable<T> key, T[] array) {
    int start = 0;
    int end = array.length - 1;
    while (start <= end) {
        int mid = (start + end) / 2;
        if (key == array[mid]) {
            return true;
        }
        if (key < array[mid]) {
            end = mid - 1;
        } else {
            start = mid + 1;
        }
    }
    return false;
}