Sortowanie 5 liczb – wypisuje w złej kolejności

0

Witam mam problem z sortowaniem 5 liczb. Dla np: 12, 4, 5 ,3, 45, wypisuje mi złą kolejnosc
Wzorowałem się na stronie http://users.uj.edu.pl/~ufkapano/algorytmy/lekcja11/sort3.html
Czy dobrze zapisałem kod?

#include <iostream>
#include <algorithm>

using namespace std;

int main()
{
    int L[5];
    for (int i = 0; i < 5; ++i) {
        cin >> L[i];
    }
    // KROK 1.
    if (L[0] > L[1]) {
        swap(L[0], L[1]);
        if (L[3] > L[4]) {
            swap(L[3], L[4]);
        }
        // KROK 2.
        if (L[1] > L[4]) {
            swap(L[1], L[4]);
            swap(L[0], L[3]);
        }
        // Mamy [a, b, e, c, d]
        // KROK 3. Wstawiamy e ,które siedzi na L[2]
        if (L[2] < L[1]) {
            if (L[2] < L[0]) {
                swap(L[2], L[1]);
                swap(L[1], L[0]); // Mamy [e, a, b, c, d]
            }
            else
                swap(L[1], L[2]); // Mamy [a, e, b, c, d]
        }
        else if (L[2] > L[4]) {
            swap(L[2], L[4]); // Mamy [a, b, d, c, e], c jest za d!
        }
        // KROK 4. Umieszczamy c, które jest na razie na L[3]
        if (L[3] < L[1]) {
            if (L[3] < L[0]) {
                swap(L[3], L[2]);
                swap(L[2], L[1]);
                swap(L[1], L[0]);
            }
            else
                swap(L[3], L[2]);
            swap(L[2], L[1]);
        }
        else if (L[3] < L[2]) {
            swap(L[2], L[3]);
        }
    }

    for (int i = 0; i < 5; ++i) {
        cout << L[i] << " ";
    }
    return 0;
}

3

Po poprawnym sformatowaniu widać, że zapisałeś źle. Ponadto jak będziesz miał posortować 6, 7 albo 15 elementów to też będziesz drabinkę ifów pisał? Nawet najgłupszy bubblesort jest lepszym pomysłem.

2

krok pierwszy -> uzyc std::sort
krok drugi => koniec

0

w którym miejscu źle zapisałem?

0

Jeśli L[0] > L[1] nie będzie prawdą, to nie dokonasz żadnych zmian. Przy czym, jeśli się uczysz, to napisz sobie bubblesorta zamiast tego potworka, a jak się nie uczysz, to użyj std::sort.

0

Muszę napisać algorytm sortowania 5 liczb w 7 porównaniach. W nawiasach klamrowych coś pomyliłem?

1 użytkowników online, w tym zalogowanych: 0, gości: 1