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