Sortowanie liczb sposobem wyboru. Większość działa prawidłowo, kilka liczb nie.

0

Mam problem z tym oto kodem. A w szczególności z tym że program teoretycznie ma działać dobrze, lecz po przesortowaniu (mi się zdarzają 2 liczby) kilka liczb jest na niewłaściwych miejscach. Przykład sortowania zbioru: http://ideone.com/8aCHCv

Z góry dziękuję za pomoc.

#include <iostream>
#include <algorithm>

using namespace std;

int main()
{
    int ile, lmin, j; // ilość liczb || i do pętli  ||  zamienna do podmiany
    cin >> ile;

    int liczba[ile]; // tabela liczb

    for (int i = 0; i < ile; i++) // uzupełnianie tabelki lizbami do sortu
    {
        cin >> liczba[i];
    }

    for (int a = 0; a < ile; a++)
    {
        lmin = a;
        for (j = a + 1; j < ile; j++)
        {
            if (liczba[lmin] > liczba[j])
            {
                lmin = j;
            }
            swap(liczba[lmin], liczba[a]);
        }
    }

    for (int p = 0; p < ile; p++)
    {
        cout << liczba[p] << " ";
    }

    return 0;
}
1
if (liczba[lmin] > liczba[j])
{
    lmin = j;
}
swap(liczba[lmin], liczba[a]);

zamień na:

if (liczba[lmin]>liczba[j])
{
    swap(liczba[lmin], liczba[j]);
}

Jako bonus:

int liczba[ile];

Ten kod (deklaracja tablicy o zmiennym rozmiarze) przechodzi w gcc, ale nie jest zgodny ze standardem, więc nie używaj go na etapie nauki.

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