quicksort
-
so ich versuche grade quicksort nach einem pseudocode der mir vorliegt zu schreiben:
nur des funktioniert nicht warum?package qs; public class Quick { public static void info(int[] arr) { int n= arr.length; for(int i= 0; i<n;i++) { System.out.print(arr[i] + " "); } System.out.print("\n"); } public static void quicksort (int[] F,int l, int r) { if(r>l) { int i=l; int j= r; int x = F[l-1]; while(j<i) { do { i = i+1; System.out.println("VERGLEICH"); } while(F[i-1]< x); do { j= j-1; System.out.println("VERGELEICH"); } while(F[j]>x); if(j<i) break; exchange(F,i-1,j-1); } exchange(F,l-1,j-1); quicksort(F,l,j-1); quicksort(F,i,r-1); } } public static void exchange(int[] a,int i, int j) { int t=a[i]; a[i]=a[j]; a[j]=t; } public static void main(String[] args) { int[] arr = new int[12]; arr[0]= 13; arr[1]= 3; arr[2]= 5; arr[3]= 7; arr[4]= 33; arr[5]= 8; arr[6]= 3; arr[7]= 7; arr[8]= 3; arr[9]= 3; arr[10]= 3; arr[11]= 3; info(arr); quicksort(arr,1,11); info(arr); } }
-
Kannst du mal den Pseudocode posten?
-
Zum sortiern eines Arrays mit den Grenzen l und r: Ist r > l Dann { i = l; j=r; x=F[l]; Wiederhole bis j<i { Wiederhole { i = i+1; } solange F[i] < x; Wiederhole { j = j-1; } solange F[j] > x; Ist j<i Verlasse die Schleife Vertausche F[i] mit F[j]; } Vertausche F[l] mit F[j]; Qicksort(l,j-1); Quicksort(i,r); }