Strona 1 z 1

[C++][Algorytmy] Szybkie sortowanie

: 12 lut 2015, o 22:44
autor: robertos18
Mam tablice,i chce ją posortować,jakie kroki musze poczynic w tym celu?

Kod: Zaznacz cały

#include<iostream>

using namespace std;
int T[10]={1,4,6,7,9,5,3,2,1,2};

void druk(int T[])
{

    for (int i=0;i<9;i++)
        cout<<T[i]<<endl;

}
void Sortowanie( int tab[], int left, int right )
{
    int i = left;
    int j = right;
    int x = tab[( left + right ) / 2 ];
    do
    {
        while( tab[ i ] < x )
             i++;

        while( tab[ j ] > x )
             j--;

        if( i <= j )
        {
            swap( tab[ i ], tab[ j ] );

            i++;
            j--;
        }
    } while( i <= j );

    if( left < j ) Sortowanie( tab, left, j );

    if( right > i ) Sortowanie( tab, i, right );

}

int main ()

{

    druk (T);
    Sortowanie();

    return 0;
}

[C++][Algorytmy] Szybkie sortowanie

: 13 lut 2015, o 00:12
autor: pasasap
Nie powinno się deklarować zmiennych globalnych, ale już to lepiej zostawić.

Popraw sobie funkcję druk, bo nie wypisze Ci wszystkich elementów.

Kod: Zaznacz cały

void druk(int T[])
{
    for (int i=0;i<10;i++)
        cout<<T[i]<<" ";
    cout<<endl;
}
Tak wyglądająca funkcja wypisze wszystkie elementy tablicy, która ma 10 elementów, dodając po każdym elemencie odstęp. Na koniec jeszcze jest dodawany znak nowej linii, by się nie pogubić.

Definicja funkcji Sortowanie() powinna Ci mówić, że wymaga w liście argumentów, aby jej podać tablicę, która ma być sortowana, indeks początkowy, od którego ma być sortowana i indeks końcowy. Piszesz po prostu zwykłe wywołanie funkcji: Sortowanie(T, 0, 9);. Indeksowanie zaczyna się od zera, rozmiar tablicy wynosi 10, więc ostatni indeks wynosi 9. Stąd te liczby. Potem wypadałoby je wypisać, więc jeszcze raz należy wywołać funkcję druk();.

[C++][Algorytmy] Szybkie sortowanie

: 13 lut 2015, o 00:17
autor: WarNaX
żebyś nie musiał plątać się po rozległym internecie:

masz wyjaśnienie działania+kod

[C++][Algorytmy] Szybkie sortowanie

: 13 lut 2015, o 00:22
autor: robertos18
dzieki pasasap za pomoc ; )