Hallo.
Mein Ziel war es die Lineare-Suche sowie die Binäre-Suche miteinander zu vergleichen. Hierzu habe ich ein Array zur Verfügung, welches mit Zahlen befüllt wird. Anschließend habe ich auch die Zeit gemessen, nur ist dies bei einer Messung nicht immer genau.
Mein Ziel ist es nun, 1000-mal durch die Liste zu gehen und eine Zahl zu suchen. Daraus dann einen Mittelwert berechnen (also Mittelwert der Suchzeit) um anschließend nochmals 30 mal diese verschiedenen Mittelwerte zusammen zu rechnen und einen endgültigen Mittelwert zu errechnen.
Kann mir da jemand behilflich sein ? Ich habe mir schon überlegt wie es vielleicht mit "for" gehen sollte aber komme nicht drauf.
Hier der Code für die Funktion :
Ganzer Code:
Vielen Dank schon mal für eure Hilfe.
Mit freundlichen Grüßen
Mein Ziel war es die Lineare-Suche sowie die Binäre-Suche miteinander zu vergleichen. Hierzu habe ich ein Array zur Verfügung, welches mit Zahlen befüllt wird. Anschließend habe ich auch die Zeit gemessen, nur ist dies bei einer Messung nicht immer genau.
Mein Ziel ist es nun, 1000-mal durch die Liste zu gehen und eine Zahl zu suchen. Daraus dann einen Mittelwert berechnen (also Mittelwert der Suchzeit) um anschließend nochmals 30 mal diese verschiedenen Mittelwerte zusammen zu rechnen und einen endgültigen Mittelwert zu errechnen.
Kann mir da jemand behilflich sein ? Ich habe mir schon überlegt wie es vielleicht mit "for" gehen sollte aber komme nicht drauf.
Hier der Code für die Funktion :
Java:
public int suchzeitLinear(int suchzahl) {
final long timeStart = System.currentTimeMillis();
for (int i = 0; i < liste.length; i++) {
if(liste[i] == suchzahl) {
return i; //wenn gefunden wird beendet
}
}
final long timeEnd = System.currentTimeMillis();
long zeit = timeEnd - timeStart; //Dieser Wert soll für Mittelwert benutzt werden
return -1; //wenn nicht gefunden
}
Ganzer Code:
Java:
package A2;
import java.util.Random;
import java.util.Arrays;
public class LineareSuche {
int[] liste; //Array wird definiert als "liste"
Random zufall = new Random(); // wird erzeugt für Klasse erzeugenUnsortiert()
int suchzahl; //Dies ist die gesuchte Zahl
public LineareSuche(){
}
public void erzeugeZufallszahl(int plätze,int oberGrenze) {
//Erzeugt nicht gleichverteilte Zufallszahlen (doppelte sind möglich)
liste = new int [plätze];
//Anzahl an Plätze wird übergeben
for (int i=0; i<liste.length;i++) {
liste[i] = zufall.nextInt(oberGrenze);
// Liefert eine int-Pseudo-Zufallszahl im Bereich von 0 bis oberGrenze
}
}
public void sortieren(){
Arrays.sort(liste);
}
public void ausgabe() {
for (int i=0; i<liste.length; i++) {
System.out.println(liste[i] + " || Index: " + (i));
}
}
public int suchzeitLinear(int suchzahl) {
final long timeStart = System.currentTimeMillis();
for (int i = 0; i < liste.length; i++) {
if(liste[i] == suchzahl) {
return i; //wenn gefunden wird beendet
}
}
final long timeEnd = System.currentTimeMillis();
long zeit = timeEnd - timeStart; //Dieser Wert soll für Mittelwert benutzt werden
return -1; //wenn nicht gefunden
}
public static void main(String[] args) {
LineareSuche l1= new LineareSuche();
l1.erzeugeZufallszahl(100, 200);
l1.sortieren();
l1.suchzeitLinear(10);
l1.ausgabe();
}
}
Vielen Dank schon mal für eure Hilfe.
Mit freundlichen Grüßen