Ihr Zweck besteht darin, die Anzahl der Vergleiche zwischen den Schlüsseln und den Array-Elementen zurückzugeben. Bitte lassen Sie mich wissen, wenn es etwas gibt, das ich ändern sollte, da ich neu in Java bin und mit Best Practices noch nicht vertraut bin.Funktionieren meine Java Binary und Linear Search Algorithmen richtig?
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;
}
Ist die Eingabe für beide sortiert? Ihre binäre Suche funktioniert nur bei sortierten Daten, und die lineare Suche kann beschleunigt werden, wenn sie an sortierten Daten arbeitet (versuchen Sie, beim array [i]> key zurückzukehren) – phflack
Ja, die Eingabe für beide ist sortiert. –