Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] Sortowanie

Ostatnio zmodyfikowano 2016-04-28 17:15
Autor Wiadomość
Bardex
Temat założony przez niniejszego użytkownika
[C++] Sortowanie
» 2016-04-28 16:30:14
Witam,
czy ktoś mógłby mi wytłumaczyć jak zmienić kod sortowania bąbelkowego:
C/C++
void Sortowanie( int tab[], int size )
{
    for( int i = 0; i < size; i++ )
    {
        for( int j = 0; j < size - 1; j++ )
        {
            if( tab[ j ] > tab[ j + 1 ] )
                 swap( tab[ j ], tab[ j + 1 ] );
           
        }
    }
}
na taki, aby zliczał on ilość wykonanych operacji?
Dajmy na to, że program wczytał 10 cyfr w kolejność 1,2,4,3,5,6,7,8,9,10 i ma je posortować od 1 do 10, ale ma także wypisać na ekranie, że wykonał 1 zamianę (4 <-> 3).
P-147751
Masterpc16
» 2016-04-28 16:34:02
Witam prosto kolego :)
C/C++
void Sortowanie( int tab[], int size )
{
    int ilosc_zamian( 0 );
    for( int i = 0; i < size; i++ )
    {
        for( int j = 0; j < size - 1; j++ )
        {
            if( tab[ j ] > tab[ j + 1 ] ) // jeśli tab[j] jest większe niż tab[j+1] to wykonaj poniższą instrukcję
           
            {
                swap( tab[ j ], tab[ j + 1 ] );
                ilosc_zamian++; // jeśli wykona zamianę to tym samym zmieni się wartość zmiennej ilosc_zamian
                //jeśli chcesz by wypisał jeszcze zamiany to
                cout << "Zamieniono " << tab[ j ] << " z " << tab[ j + 1 ];
            }
           
        }
    }
    cout << "Wykonano " << ilosc_zamian << " zamian"
}
P-147752
Bardex
Temat założony przez niniejszego użytkownika
» 2016-04-28 16:39:42
Dzięki wielkie :), a jeszcze małe pytanko. Da radę zrobić to na tej samej zasadzie w sortowaniu koktajlowym?
P-147753
Masterpc16
» 2016-04-28 16:43:19
to jest przykładowy kod sortowania koktajlowego
C/C++
void Sortowanie( int tab[], int size )
{
    int bottom = 0, top = size - 1, ilosc_zmian( 0 );
    bool replace = true;
   
    while( replace )
    {
        replace = false;
       
        for( int i = bottom; i < top; i++ )
        {
            if( tab[ i ] > tab[ i + 1 ] )
            {
                swap( tab[ i ], tab[ i + 1 ] );
                //tutaj dodajesz
                ilosc_zmian++;
               
                replace = true;
            }
        }
       
       
        top--;
        for( int i = top; i > bottom; i-- )
        {
            if( tab[ i ] < tab[ i - 1 ] )
            {
                swap( tab[ i ], tab[ i - 1 ] );
                //oraz tutaj
                ilosc_zmian++;
               
                replace = true;
            }
        }
       
        bottom++;
    }
    cout << "Wykonano " << ilosc_zmian << " zmian" << endl;
}

czyli tak :)
P-147754
Bardex
Temat założony przez niniejszego użytkownika
» 2016-04-28 17:15:58
Jeszcze raz, wielkie dzięki :). Przy okazji ogarnąłem jak działają te typy sortowania. Zamykam temat.
P-147756
« 1 »
  Strona 1 z 1