Hallo,
ich muss die Methoden binarySearch und linearSearch für Arrays implementieren. Das habe ich so gemacht:
Jetzt wenn ich für den gleichen Elementen mit beiden Suchoptionen suche, und die Zeit vergleiche ist linearSearch deutlich schneller. Wie kann das sein? BinarySearch sollte doch viel effizienter sein.
Danke im vorraus
ich muss die Methoden binarySearch und linearSearch für Arrays implementieren. Das habe ich so gemacht:
Java:
public static int linearSearch(Produkt key) { //Produkt ist eine selbst erstellte Klasse
Produkt[] a = null;
if (sarray == null) {
a = benchmark(); //benchmark erstellt ein Array, falls kein von binarySearch erstellt wurde
sarray = a;
} else {
a = sarray;
}
for (int i = 0; i < a.length; i++) {
if (key.equal(a[i])) //equal vergleicht Elemente der Klasse Produkt
return i;
}
return -1;//falls nicht vorhanden
}
public static int binarySearch(Sortable key) {
Sortable[] a = null;
if (sarray == null) {
a = benchmark(); //benchmark erstellt ein Array, falls kein von linear Search erstellt wurde
sarray = a;
} else {
a = sarray;
}
quickSort(a); //array sortieren
int first = 0;
int upto = a.length;
while (first < upto) {
int mid = (first + upto) / 2;
if (key.less(a[mid])) {
upto = mid;
} else if (key.greater(a[mid])) { //greater vergleicht Elemente der Klasse Produkt
first = mid + 1;
} else {
return mid;
}
}
return -1;
}
Jetzt wenn ich für den gleichen Elementen mit beiden Suchoptionen suche, und die Zeit vergleiche ist linearSearch deutlich schneller. Wie kann das sein? BinarySearch sollte doch viel effizienter sein.
Danke im vorraus