Ich muss für die Schule eine Übung machen aber ich habe einen seltsamen Fehler.
Und zwar verwaltet der Bubblesort meinen Array wieder in den Anfangszustand also das die Stellen alle mit 0 belegt sind. Das gleiche war auch mit Quicksort.
Sogar der Lehrer hat den Fehler nicht gefunden.
In der Übung werden 2 Arrays erstellt die die gleichen Werte bekommen. Danach wird eine Zahl darin gesucht. Es soll dann die Zeit der jeweiligen Suchalgorithmen ausgegeben werden.
Und zwar verwaltet der Bubblesort meinen Array wieder in den Anfangszustand also das die Stellen alle mit 0 belegt sind. Das gleiche war auch mit Quicksort.
Sogar der Lehrer hat den Fehler nicht gefunden.
In der Übung werden 2 Arrays erstellt die die gleichen Werte bekommen. Danach wird eine Zahl darin gesucht. Es soll dann die Zeit der jeweiligen Suchalgorithmen ausgegeben werden.
Java:
import java.util.Random;
public class Main {
public static void main(String[] args) {
final int length = 10000;
int muli = 1000000;
int[] a = new int[length];
random(a);
int [] a2 = a;
bubbleSort_1(a);
long s = System.currentTimeMillis();
for(int b = 0;b<muli;b++) {
lineareSuche(a, 101);
}
long e= System.currentTimeMillis();
long t = e-s;
System.out.printf("Array 1: %d ms%n",t);
bubbleSort_1(a2);
long x = System.currentTimeMillis();
for(int b = 0;b<muli;b++) {
binaerSuche(a2, 101);
}
long y = System.currentTimeMillis();
long z = y-x;
System.out.printf("Array 2: %d ms",z);
}
public static int lineareSuche(int [] feld, int wert){
for(int i = 0;i>feld.length;i++){
if (feld[i]== wert){
return feld[i];
}
}
return -1;
}
public static int binaerSuche(int[] feld, int wert) {
int links = 0;
int rechts = feld.length - 1;
int mitte;
do {
mitte = (rechts + links) / 2;
if (wert < feld[mitte]) {
rechts = mitte - 1;
} else {
links = mitte + 1;
}
} while (feld[mitte] != wert && links <= rechts);
if (feld[mitte] != wert)
mitte = -1;
return mitte;
}
public static void random(int [] a){
Random r = new Random();
for(int i = 0;i<a.length;i++){
a[i]= r.nextInt(100);
}
}
public static void print(int [] a){
for(int i = 0;i<a.length;i++){
System.out.printf("%d : %d %n",i,a[i]);
}
}
public static void bubbleSort_1(int[] feld){
int help;
for (int i = 1; i < feld.length; i++) {
for (int j = 0; j < feld.length-i; j++) {
if (feld[j] > feld[j+1]){
help = feld[j];
feld[j] = feld[j+1];
feld[j+1] = help;
}
}
}
}
}