StartAlgorytmyAlgorytmy sortowaniaSortowanie przez zliczanie (countingsort)
Baza Wiedzy
Wersja offline serwisu przeznaczona na urządzenia z systemem Android.

Darowizny
darowiznaWspomóż rozwój serwisu


Nagłówki RSS
Kanał artykuły
Kanał implementacje
Kanał komentarze
Kanał forum


Bookmarki









Sonda
Implementacji w jakim języku programowania poszukujesz?
 
Sortowanie przez zliczanie (countingsort)
Ocena użytkowników:++++- / 7
SłabyŚwietny 
Wpisany przez Michał Knasiecki
sobota, 13 sierpnia 2005 10:45
Sortowanie przez zliczanie ma jedną potężną zaletę i jedną równie potężną wadę:
  • Zaleta: działa w czasie liniowym (jest szybki)
  • 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:
  • Liczba 1 występuje 2 razy
  • Liczba 2 występuje 1 raz
  • Liczba 3 występuje 2 razy
  • Liczba 4 występuje 0 razy
  • Liczba 5 występuje 0 razy
  • Liczba 6 występuje 1 raz
  • 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



Autor Język programowania Komentarz Otwórz Pobierz Ocena
Michał Knasiecki C/C++
Implementacja w C/C++
Implementacja w C/C++
+++-- / 5
Marian C/C++ C++
Implementacja w C/C++
Implementacja w C/C++
+++-- / 3
Michał Knasiecki Delphi/Pascal Borland Delphi 5
Implementacja w Delphi/Pascal
Implementacja w Delphi/Pascal
+++-- / 3
Tomasz Lubiński Java
Implementacja w Java
Implementacja w Java
++--- / 3
Jakub Konieczny Java Block
Implementacja w Java Block
Implementacja w Java Block
++++- / 1
 
Dodaj własną implementację tego algorytmu
  • Zaloguj się na stronie
Plik:
Język programowania:
Komentarz:
  By móc dodać implementacje zaloguj się na stronie



Poprawiony: piątek, 27 maja 2011 08:46

Komentarze

 
photo
0 # rafał 2009-11-14 15:42
...zliczeniu (w jednym korku) operujemy... taką literówkę złapałem
pozdrawiam
Odpowiedz | Odpowiedz z cytatem | Cytować
 

Dodaj komentarz

Kod antysapmowy
Odśwież