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);
    }
    

Anmelden zum Antworten