所以我试图编写一个可用于大多数非原始数据类型的线性搜索。
以下是我使用的代码:
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。我只是想使用线性搜索算法
由于
答案 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;
}