【发布时间】:2017-10-24 17:08:41
【问题描述】:
它们的目的是返回键和数组项之间的比较次数。 请让我知道是否有任何需要更改的地方,因为我是 Java 新手,还不完全熟悉最佳实践。
public class BinaryVsLinear {
private static int linearSearch(int key, int[] array){
int count = 0;
for (int i = 0; i < array.length; i++){
count++;
if (array[i] == key){
i += array.length +1;
}
}
return count;
}
private static int binarySearch(int key, int[] array){
int count = 0, l = 0, r = array.length -1;
while (l <= r){
int m = (l+r)/2;
count++;
if (array[m] == key){
return count;
}
count++;
if (array[m] < key){
l = m + 1;
}
else{
r = m - 1;
}
}
return count;
}
【问题讨论】:
-
两者的输入是否已排序?您的二分搜索仅适用于已排序的数据,如果它正在处理已排序的数据,则可以加快线性搜索(尝试在 array[i]>key 时返回)
-
是的,两者的输入都已排序。
标签: java binary-search linear-search