Hallo,
ich möchte einen Quicksort Algorithmus schreiben und diesen dann in weiterer Folge auch mit der median-of-three Methode verbessern.
Aber beim implementieren des normalen Quicksort Algorithmus habe ich schon irgendwo einen Fehler... Ich hoffe ein geschultes Auge erkennt sofort was ich verbockt habe. Ich komme leider selbst nicht drauf
Vielen Dank!
Fehlermeldung
Vielen Dank!
ich möchte einen Quicksort Algorithmus schreiben und diesen dann in weiterer Folge auch mit der median-of-three Methode verbessern.
Aber beim implementieren des normalen Quicksort Algorithmus habe ich schon irgendwo einen Fehler... Ich hoffe ein geschultes Auge erkennt sofort was ich verbockt habe. Ich komme leider selbst nicht drauf
Vielen Dank!
Code:
package algodat;
public class Sort {
static boolean less(int v, int w){
return v<w;
}
static void exch(int[] a, int i , int j){
int t = a[i];
a[i] = a[j];
a[j] = t;
}
static void compExch(int[] a, int i , int j){
if(less(a[j], a[i])){
exch(a, i ,j);
}
}
static void quicksort(int[] a){
quicksort(a,0,a.length-1);
}
static void quicksort(int[] a, int l, int r){
int x;
int p;
if(l<r){
x = a[r];
p = partition(a, l, r, x);
quicksort(a,l,p-1);
quicksort(a,p+1,r);
}
}
static int partition(int[] a, int l, int r, int x){
int i = l-1;
int j = r;
if(i==-1)
i = 0;
while(i<j){
while(a[i] < x){
i = i+1;
}
while(j>i || a[j] > x){
j = j-1;
}
if(i < j){
exch(a, i , j);
}
}
exch(a,i,r);
return i;
}
public static void main (String[] args){
// (1) define your java int array
int[] intArray = new int[] {6,7,8,1,3,5,6};
// (2) print the java int array
for (int i=0; i<intArray.length; i++)
{
System.out.print(intArray[i]);
}
System.out.println(" ");
System.out.println("Sortiert");
quicksort(intArray);
// (3) print the sorted java int array
for (int i=0; i<intArray.length; i++)
{
System.out.print(intArray[i]);
}
}
}
Fehlermeldung
Exception in thread "main" java.lang.StackOverflowError
Vielen Dank!