funktion umschreiben

Post Reply
Message
Author
vanilla.coffee

funktion umschreiben

#1 Post by vanilla.coffee »

hi,
wie bekomme ich es hin, dass die Funktion double-Werte sortiert und nicht nur int-Werte?
int zu double machen funktioniert nicht.

danke im Voraus.

Code: Select all

void quicksort(int feld[MAX], int left, int right) {
    int rightpos = feld[right];
    int l = left;
    int r = right;
    
    if&#40;left < right&#41; &#123;
        do &#123;
            while&#40;feld&#91;l&#93; < rightpos&#41; l++;
            while&#40;feld&#91;r&#93; > rightpos&#41; r--;
            
            if &#40;l <= r&#41; &#123;
                int swap = feld&#91;l&#93;;
                feld&#91;l&#93; = feld&#91;r&#93;;
                feld&#91;r&#93; = swap;
                l++;
                r--;
            &#125;
        &#125;
        while&#40;l <= r&#41;;
        quicksort&#40;feld, left, r&#41;;
        quicksort&#40;feld, l, right&#41;;
    &#125;
&#125;

User avatar
Lateralus
prolinux-forum-admin
Posts: 1238
Joined: 05. May 2004 7:35

#2 Post by Lateralus »

Du musst einfach alle int durch double ersetzen (außer die, die zur Indizierung des Arrays fungieren). Übrigens solltest du das "double swap" nicht in der while-Schleife deklarieren - dann wird sie immer wieder neu deklariert.

Code: Select all

void quicksort&#40;double feld&#91;MAX&#93;, int left, int right&#41; &#123;
    double rightpos = feld&#91;right&#93;;
    int l = left;
    int r = right;
   
    if&#40;left < right&#41; &#123;
        do &#123;
            while&#40;feld&#91;l&#93; < rightpos&#41; l++;
            while&#40;feld&#91;r&#93; > rightpos&#41; r--;
           
            if &#40;l <= r&#41; &#123;
                double swap = feld&#91;l&#93;;
                feld&#91;l&#93; = feld&#91;r&#93;;
                feld&#91;r&#93; = swap;
                l++;
                r--;
            &#125;
        &#125;
        while&#40;l <= r&#41;;
        quicksort&#40;feld, left, r&#41;;
        quicksort&#40;feld, l, right&#41;;
    &#125;
&#125; 

Quietscheentchen

#3 Post by Quietscheentchen »

Außerdem musst du alles als "char" deklarieren und eine Funktion "string zufallszahl" implementieren.

Gruß,
das Quietscheentchen

vanilla.coffee

#4 Post by vanilla.coffee »

Danke für den Tipp.
Das Programm bricht aber immer noch mit "Speicherzugriffsfehler" ab.

Habe keine Ahnung warum.

Post Reply