[C++][Algorytmy] Szybkie sortowanie

robertos18
Użytkownik
Użytkownik
Posty: 423
Rejestracja: 6 paź 2014, o 20:03
Płeć: Mężczyzna
Lokalizacja: Torun
Podziękował: 127 razy
Pomógł: 2 razy

[C++][Algorytmy] Szybkie sortowanie

Post 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;
}
Ostatnio zmieniony 13 lut 2015, o 08:31 przez Afish, łącznie zmieniany 1 raz.
Powód: Poprawa wiadomości.
pasasap
Użytkownik
Użytkownik
Posty: 83
Rejestracja: 13 wrz 2011, o 19:07
Płeć: Mężczyzna
Podziękował: 33 razy
Pomógł: 5 razy

[C++][Algorytmy] Szybkie sortowanie

Post 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();.
WarNaX
Użytkownik
Użytkownik
Posty: 7
Rejestracja: 27 lut 2014, o 22:51
Płeć: Mężczyzna
Lokalizacja: Gdańsk
Pomógł: 2 razy

[C++][Algorytmy] Szybkie sortowanie

Post autor: WarNaX »

żebyś nie musiał plątać się po rozległym internecie:

masz wyjaśnienie działania+kod
robertos18
Użytkownik
Użytkownik
Posty: 423
Rejestracja: 6 paź 2014, o 20:03
Płeć: Mężczyzna
Lokalizacja: Torun
Podziękował: 127 razy
Pomógł: 2 razy

[C++][Algorytmy] Szybkie sortowanie

Post autor: robertos18 »

dzieki pasasap za pomoc ; )
ODPOWIEDZ