Web - Amazon

We provide Linux to the World


We support WINRAR [What is this] - [Download .exe file(s) for Windows]

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
SITEMAP
Audiobooks by Valerio Di Stefano: Single Download - Complete Download [TAR] [WIM] [ZIP] [RAR] - Alphabetical Download  [TAR] [WIM] [ZIP] [RAR] - Download Instructions

Make a donation: IBAN: IT36M0708677020000000008016 - BIC/SWIFT:  ICRAITRRU60 - VALERIO DI STEFANO or
Privacy Policy Cookie Policy Terms and Conditions
Sortowanie przez zliczanie - Wikipedia, wolna encyklopedia

Sortowanie przez zliczanie

Z Wikipedii

Sortowanie przez zliczanie – metoda sortowania, wymagająca spełnienia pewnych założeń wobec sortowanych danych. Jej główną zaletą jest liniowa złożoność obliczeniowa algorytmu – O(n+k) (n – oznacza liczebność zbioru, k – liczbę różnych elementów). Największymi ograniczeniami algorytmu są konieczność uprzedniej znajomości zakresu danych i złożoność pamięciowa (wymaga dodatkowo O(k) lub O(n+k) pamięci).

Algorytm zakłada, że klucze elementów należą do skończonego zbioru (np. są to liczby całkowite z przedziału 0..100), co ogranicza możliwości jego zastosowania.

Istnieją dwie implementacje algorytmu:

  • prostsza – sortująca in situ (w miejscu), zakłada, że elementy o równych kluczach są nierozróżnialne, nie mogą zatem być to klucze danych (każdy z nich jest bowiem powiązany z przenoszoną wartością – zatem, mimo iż są one równe, muszą pozostawać rozróżnialne);
  • standardowa – gwarantuje stabilność i nie wymaga dodatkowego założenia. Potrzebuje natomiast O(n) więcej pamięci;

Idea algorytmu polega na sprawdzeniu ile wystąpień danego klucza występuje w sortowanej tablicy.

Spis treści

[edytuj] Przykładowa implementacja w języku C

[edytuj] Wersja uproszczona

const int k = 77; // elementami tablicy T są liczby całkowite z 
                               // z przedziału 1..77
const int n = 1000;
int T[n]; // sortowana tablica
int TPom[k]; // zawiera liczbę elementów o danej wartości
 
int i; // pomocnicza zmienna (indeks)
 
// wyzerowanie pomocniczej tablicy
  for (i = 0 ; i < k ; ++i)
    TPom[i] = 0;
 
// zliczenie elementów o danej wartości
  for (i = 0 ; i < n ; ++i)
    TPom[T[i]-1] += 1;
 
// w tym miejscu możemy przepisać dane znowu do tablicy początkowej
  int j, l = 0;
  for (i = 0 ; i < k ; ++i)
    for (j = 0 ; j < TPom[i] ; ++j)
       T[l++] = i+1;      // miejsce w tablicy pomocniczej określa wartość zmiennej

[edytuj] Wersja standardowa

const int k = 77; // elementami tablicy T są liczby całkowite z 
                              // z przedziału 1..77
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]-1]++;             // po tych operacjach TPom[i] będzie zawierała 
                              // liczbę wystąpień elementów o kluczu 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]-1]-1] = T[i];   // wstawienie elementu na odpowiednią pozycję
     --TPom[T[i]-1];            // aktualizacja TPom
  }

[edytuj] Linki zewnętrzne

Our "Network":

Project Gutenberg
https://gutenberg.classicistranieri.com

Encyclopaedia Britannica 1911
https://encyclopaediabritannica.classicistranieri.com

Librivox Audiobooks
https://librivox.classicistranieri.com

Linux Distributions
https://old.classicistranieri.com

Magnatune (MP3 Music)
https://magnatune.classicistranieri.com

Static Wikipedia (June 2008)
https://wikipedia.classicistranieri.com

Static Wikipedia (March 2008)
https://wikipedia2007.classicistranieri.com/mar2008/

Static Wikipedia (2007)
https://wikipedia2007.classicistranieri.com

Static Wikipedia (2006)
https://wikipedia2006.classicistranieri.com

Liber Liber
https://liberliber.classicistranieri.com

ZIM Files for Kiwix
https://zim.classicistranieri.com


Other Websites:

Bach - Goldberg Variations
https://www.goldbergvariations.org

Lazarillo de Tormes
https://www.lazarillodetormes.org

Madame Bovary
https://www.madamebovary.org

Il Fu Mattia Pascal
https://www.mattiapascal.it

The Voice in the Desert
https://www.thevoiceinthedesert.org

Confessione d'un amore fascista
https://www.amorefascista.it

Malinverno
https://www.malinverno.org

Debito formativo
https://www.debitoformativo.it

Adina Spire
https://www.adinaspire.com