Quicksort. Mein Code sortiert faslch. Kann bitte jemand den korriegieren?

Erste Frage Aufrufe: 1061     Aktiv: 17.05.2020 um 15:00

0

Habe ein Problem, mein Code für Quicksort sortiert falsch.(Annahme, dass das Pivotelement an der letzten Stelle ist), Kann bitte jemand den korriegieren?

public static int[] QuicksortMain(int[] liste, int erstes, int letztes) { if(erstes<letztes) { int loc = Quicksort(liste, erstes, letztes); QuicksortMain(liste,erstes,loc-1); QuicksortMain(liste,loc+1, letztes); } return liste; }

    public static int Quicksort(int [] liste,int low, int high){
        int pivot=liste[high];
        int left=high-1;
        int right=low;
    while(left<=right) {
        if(liste[left]<=pivot) {
            left++;
        }
        else if(liste[right]>pivot) {
            right--;
        }
        else{
    int temp=liste[right];
    liste[right]=liste[left];
    liste[left]=temp;
    }}
    if(left>right) {
    int temp=liste[high];
    liste[high]=liste[left];
    liste[left]=temp;}
        return left;
    }
Diese Frage melden
gefragt

Punkte: 10

 
Kommentar schreiben
1 Antwort
1

Hallo haftor, ich hab das mal in C umgeschrieben und mit dem Pseudocode von Wikipedia verglichen. Du hast left und right verwechselt. mit

int left = low;
int right = high -1;

klappt es bei mir. Habe allerdings nicht viel getestet.

int ConstListe[] { 1,3,5,7,6,4,2 };

hat aber problemlos funktioniert. Gruß jobe

Diese Antwort melden
geantwortet

Sonstiger Berufsstatus, Punkte: 505

 

Kommentar schreiben