Hallo alle zusammen,
wir behandeln zur Zeit die Sortieralgorithmen und sollen den Quicksort implementieren.
Ich muss sagen, ich hab mich anfangs sehr schwer getan, das Prinzip in Code umzusetzen.
Ich hab mir jetzt was zusammengebastelt, was eigentlich funktionieren sollte, allerdings Gerät das ganze an einer sehr merkwürdigen Stelle in eine "Endlosschleife??"
Bin das Programm im Debug-mode durchgegangen und es hört plötzlich auf. ???:L
wir behandeln zur Zeit die Sortieralgorithmen und sollen den Quicksort implementieren.
Ich muss sagen, ich hab mich anfangs sehr schwer getan, das Prinzip in Code umzusetzen.
Ich hab mir jetzt was zusammengebastelt, was eigentlich funktionieren sollte, allerdings Gerät das ganze an einer sehr merkwürdigen Stelle in eine "Endlosschleife??"
Bin das Programm im Debug-mode durchgegangen und es hört plötzlich auf. ???:L
Java:
package QickSort;
public class run {
private static int[] swap(int[] array,int l,int r)
{
int tmp = array[l];
array[l] = array[r];
array[r] = tmp;
return array;
}
private static void Quicksort(int[] array, int l, int r)
{
int pivot = array[l]; //Speichere das Pivotelement ab
int i = l + 1; //Beginne bei einer Position rechts vom Pivotelement
int j = r;
if(r > l) //Solange das array größer als 1 ist
{
while(i <= j) //Bis sich die linke Suche und die rechte Suche treffen
{
while(array[i] < pivot); //Suche von links nach einem Element, größer als das Pivotelement
i++;
while(array[j] > pivot); //Suche von rechts nach einem Element, kleiner als das Pivotelement. Hier bricht das Programm ab... ohne Fehlermeldung
j--;
array = swap(array, i , j); //Vertausche die beiden Elemente
}
array = swap(array, i, l); //Tausche das Pivotelement mit dem Element, kleiner als das Pivotelement, das an rechtester Position sitzt
for(int k = 0; k < array.length; k++)
System.out.print(array[k] + "\t");
Quicksort(array, l, i - 1); //Starte Quckisort erneut von links bis zur letzten Position vor dem Pivotelement
Quicksort(array, i + 1, r); //Starte Quicksort erneut von der ersten Position rechts vom Pivotelement bis zur letzten Position
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] array = new int[] {-5, 13, -32, 7, -3, 17, 23, 12, -35, 19};
Quicksort(array, 0, array.length - 1);
}
}