QuickSort - Fehler nicht zu finden

bvdcomp

Aktives Mitglied
Hallo Zusammen,

Ich habe folgendes keines JAVA-Programm erstellt.

Java:
import java.util.Random;

public class QuickSort {

    private int[] array;
    public static void main(String args[])
    {
        new QuickSort();
    }

    public QuickSort()
    {
        array = new int[20];
        erzeugeZufallsZahl();
        print();
        sort(0,array.length-1);
        print();
    }

    private void erzeugeZufallsZahl()
    {
    	Random zufallsZahl = new Random();
        for(int i=0; i<array.length; i++){
        	array[i] = zufallsZahl.nextInt(98)+1;
        }
    }

    public void sort(int low, int high)
    {
        int i = low, j = high;
        int pivot = array[(low + high)/2];
 
        while(i<=j)
        {
        	while(array[i] < pivot){
        		i++;
        	}

            while(array[j] > pivot){
            	i--;
       		}
            
             if(i<=j){
                swap(i, j);
                i++;
                j--;
            }else{
		break;
			}
             
             if(low < j){
            	 sort(low, j);
             }
             
             if(i < high){
            	 sort(i, high);
             }
        }
    }

    public void print()
    {
        System.out.println("*========================================*");
        System.out.println("* Zufallszahlen welche zu sortieren sind *");
        System.out.println("*========================================*");

        for(int i = 0, x = 1; i < array.length; i++, x++)
        {
            System.out.print("Zahl "+ x + ":  " + String.valueOf(array[i])+ "\n");
        }
        System.out.println("*========================================*");
        System.out.println("*          Sortierte Zahlen              *");
        System.out.println("*========================================*");
    }

    public void swap(int i, int j)
    {
        int temp = array[i];
        array[i] = array[j];
        array[j] = temp;
    }
}

Leider loopt es nach dem erzeugen und ausgeben der Zufallszahlen.
Und ich kann nicht rausfinden wo!!

Ich habe ein break; nach dem Aufrufen von swap(); gemacht, aber es funkt gleich nicht.???:L???:L???:L

Kann mir jemand da weiterhelfen?

Danke
 
Könnte es sein, dass es in Zeile 40
Code:
j--;
heißen soll?
Außerdem sehen die beiden while-Schleife ab Zeile 35 verdächtig nach eine Fehlerquelle für ArrayIndexOutOfBounds aus
 

Zurück
Oben