Hallo,
wir sollten das Quicksort Verfahren von einen Blatt erarbeiten. Auf der Rückseite war der Code als Strukturgramm angegeben.
Aufgabe Implementieren und den Array vorher nachher ausgeben.
Erstmal wusste ich garnicht was ich bei links und rechts angeben sollte, daher mal gegoogelt und mal 0 und feld.length-1 angegeben.
Aber der Algorithmus selbst macht doch Probleme.
Fehler:
Aber ich weiss jetzt nicht wie dieser Fehler überhaupt entsteht.
Der Klassencode:
Und ich habe keinen Abschreibfehler gemacht.... DAs habe ich schon kontrolliert
wir sollten das Quicksort Verfahren von einen Blatt erarbeiten. Auf der Rückseite war der Code als Strukturgramm angegeben.
Aufgabe Implementieren und den Array vorher nachher ausgeben.
Erstmal wusste ich garnicht was ich bei links und rechts angeben sollte, daher mal gegoogelt und mal 0 und feld.length-1 angegeben.
Aber der Algorithmus selbst macht doch Probleme.
Fehler:
Java:
java.lang.ArrayIndexOutOfBoundsException: -1
at SortierverfahrenQ1.quicksort(SortierverfahrenQ1.java:26)
at SortierverfahrenQ1.showArray(SortierverfahrenQ1.java:50)
Der Klassencode:
Java:
import java.lang.Math;
/**
* Write a description of class SortierverfahrenQ1 here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class SortierverfahrenQ1
{
int[] feld = new int[500];
/**
* Constructor for objects of class SortierverfahrenQ1
*/
public SortierverfahrenQ1()
{
}
public void quicksort(int links, int rechts) {
if(rechts > links) {
int p = feld[rechts];
int i = links-1;
int j = rechts;
int temp = 0;
while( j > i )
{
while ( feld[i] < p)
{
i = i+1;
}
while ( feld[j] > p && j != 0)
{
j = j-1;
}
temp = feld[i];
feld[i] = feld[j];
feld[j] = temp;
}
feld[j] = feld[i];
feld[i] = feld[rechts];
feld[rechts] = temp;
quicksort(links, i-1);
quicksort(i+1, rechts);
}
}
public void showArray() {
for (int x=0; x<feld.length; x++) {
System.out.print(feld[x] +" ");
}
System.out.println();
quicksort(0, feld.length-1);
for (int x=0; x<feld.length; x++) {
System.out.print(feld[x] +" ");
}
}
public void initZufaellig()
{
double cachedouble = 0;
int cache = 0;
for(int x = 0; x < feld.length; x++)
{
cachedouble = Math.random();
cachedouble = cachedouble * 50000;
cache = (int)cachedouble;
feld[x] = cache;
}
}
}