Rekursive Bubble-Sort in C

Ich bin nicht in der Lage den Fehler zu finden in dem silly rekursive bubble-sort-code unten. Kann jemand sagen, warum es nicht richtig funktioniert? Vielen Dank im Voraus.

#include <stdio.h>

int b[8] = { -9, 9, 89, 78, 56, 45, 34, 89 };

void print(int n)
{
    int i; 

    for (i = 0; i < n; i++)
        printf("%d\t", b[i]);

    printf("\n");
}

void rb(int n)
{
    if(n == 0) 
        return;

    int i, j;
    for (i = 0; i < n - 1; i++) {
        if (b[i + 1] > b[i])
            j = b[i + 1];

        b[i + 1] = b[i];
        b[i] = j;
    }

    rb(n - 1);
}

int main()
{
    print(8); 
    rb(8); 
    print(8); 

    return 0;
}
  • Die 3 Aussagen, die die swap-müssen drin sein {...} so werden Sie alle unterliegen den if. Und die if test ist rückwärts auch wenn Sie sind mit dem Ziel, die Nummern in aufsteigender Reihenfolge.
  • Ich Frage die Nützlichkeit der re-Formatierung bearbeitet, wenn das original irreführend (und in der Regel miese) Senkung war wohl ein Teil des Problems in den ersten Platz.
  • Ja, wie kann ich vermisse Klammern...dumm...extrem schlechte Frage .
  • Einfach nicht downvote, weil ich m nicht in der Lage, es zu löschen.
  • Dies hätte vermieden werden können, die von verwenden Sie immer Klammern, wenn-dann,. Alternativ könnte man eine richtige IDE, die korrekte Einrückung, da der Fehler ganz klar nach dem nil Bearbeiten. @WumpusQ. Wumbley ich gebe zu, ich hatte zu schauen, die edit-history zu verstehen, wie die OP könnte es verpasst haben, mit, dass offensichtlich die Einrückung, aber ich denke, dass null-edit-war positiv, da der Fehler blieb.
InformationsquelleAutor Rafed Nole | 2013-11-15
Schreibe einen Kommentar