lista6 moja opis

Sortowanie przez zliczanie ma jedną potężną zaletę i jedną równie potężną wadę:

  1. Zaleta: działa w czasie liniowym (jest szybki)

  2. Wada: może sortować wyłącznie liczby całkowite

Obydwie te cechy wynikają ze sposobu sortowania. Polega ono na liczeniu, ile razy dana liczba występuje w ciągu, który mamy posortować. Następnie wystarczy utworzyć nowy ciąg, korzystając z danych zebranych wcześniej. Np. mamy posortować ciąg: 3,6,3,2,7,1,7,1. Po zliczeniu (w jednym korku) operujemy danymi na temat liczności poszczególnych liczb:

  1. Liczba 1 występuje 2 razy

  2. Liczba 2 występuje 1 raz

  3. Liczba 3 występuje 2 razy

  4. Liczba 4 występuje 0 razy

  5. Liczba 5 występuje 0 razy

  6. Liczba 6 występuje 1 raz

  7. Liczba 7 występuje 2 razy

Na podstawie tych danych tworzymy ciąg: 1,1,2,3,3,6,7,7. Jest to ciąg wejściowy, ale posortowany. Należy zauważyć trzy ważne rzeczy:

  1. Proces zliczania odbył się w jednym kroku

  2. Nie doszło do ani jednej zamiany elementów

  3. Proces tworzenia tablicy wynikowej odbył się w jednym kroku

Algorytmy ten posiada jednak również wady:

  1. Do przechowywania liczby wyrazów ciągu musimy użyć tablicy, o liczbie elementów równej największemu elementowi ciągu

  2. Sortować można jedynie liczby całkowite

Przykładowa implementacja w języku C++:

const int k = 77; // elementami tablicy T są liczby całkowite z

// z przedziału 0..76

const int n = 1000;

int T[n]; // tablica zawierająca elementy do posortowania

int Tp[n]; // tablica zawierająca elementy posortowane

int TPom[k]; // zawiera liczbę elementów o danej wartości

int i; // zmienna pomocnicza

for(i = 0 ; i < k ; ++i)

TPom[i] = 0; // zerowanie tablicy

for(i = 0 ; i < n ; ++i)

++TPom[T[i]]; // po tych operacjach TPom[i] będzie zawierała

// liczbę wystąpień elementów o kluczach mniejszych od i

for(i = 1 ; i < k ; ++i)

TPom[i] += TPom[i-1]; // teraz TPom[i] zawiera pozycje w posortowanej

// tablicy ostatniego elementu o kluczu i

for(i = n-1 ; i >= 0 ; --i)

Tp[--TPom[T[i]]] = T[i]; // wstawienie elementu na odpowiednią pozycję

// i aktualizacja Tpom


Wyszukiwarka

Podobne podstrony:
lista6 moja opis
lista6 moja opis
lista6 moja opis 2?jniejszy
lista6 moja opis
lista6 moja opis
lista6 moja opis
lista6 moja, ProgCPP 04 Sort2
moja kariera www prezentacje org
Analiza pracy Opis stanowiska pracy
82 Dzis moj zenit moc moja dzisiaj sie przesili przeslanie monologu Konrada
opis techniczny
agresja moja
Opis taksacyjny
OPIS JAKO ĆWICZENIE W MÓWIENIU I PISANIU W ppt
2 Opis RMDid 21151 ppt
HOTELARSTWO MOJA KOPIA
Bliższy opis obiektów Hauneb
opis techniczny

więcej podobnych podstron