Sortowanie 5 liczb (7 porównań)

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

Gdzie popełniłem błąd?

#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;
}

0

Wystarczyło uważnie sprawdzić, czy to co masz jest tym samym co było na stronie. W czwartym kroku brakuje klamry po else:

// 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 ] );
        }
    }

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