Counting Sort

  • Algoritmus třídění, který využívá jinou informaci než porovnávání
  • Lze použít pouze pro třídění celých čísel
  • Idea:
    • - pole vstupní
    • - pole výstupní
    • - pole pomocné
  • Složitost algoritmu v nejhorším případě:
  • stabilní algoritmus počítání
Counting-Sort(A, B, k)
	for i <- 0 to k
		do C[i] <- 0
	for j <- 0 to n-1
		do C[A[j]] <- C[A[j]]+1  // C[i] obsahuje počet prvků v A rovných i
	for i <- 1 to k
		do C[i] <- C[i] + C[i-1] // C[i] obsahuje počet prvků v A <= i
	for j <- n-1 downto 0
		do B[C[A[j]]-1] <- A[j]
		   C[A[j]] <- C[A[j]]-1

Výpočet složitosti v nejhorším případě

  • řádek instrukcí.
  • řádek instrukcí.
  • řádek instrukcí.
  • řádek instrukcí.
  • Tedy složitost Counting Sort je v nejhorším případě .
  • Je-li (tedy pro ), je poté složitost v nejhorším případě

Radix Sort

  • Používali operátoři mechanických třídiček děrných štítků
  • Idea:
    • Třídíme -místná čísla.
    • Třídění proběhne v průchodech.
      • V průchodu se čísla setřídí podle jejich poslední číslice,
      • v podle předposlední,
  • Lze jej využít i na třídění textových řetězců, data ve tvaru rok-měsíc-den, …
  • Složitost algoritmu v nejhorším případě:
Radix-Sort(A, d)
	for i <- 1 to d
		do Stable-Sort(A, i)

Výpočet složitosti v nejhorším případě

  • řádek : instrukcí
  • řádek instrukcí

Bucket Sort

  • Třídí čísla z intervalu
  • Idea:
    • Projdeme prvky pole a každý z nich vložíme do příslušného intervalu (do příslušného seznamu ).
    • Každý seznam setřídíme.
    • Prvky setříděných seznamů vložíme po řadě do výstupního pole
  • Složitost algoritmu v nejhorším případě je:
  • Složitost v průměrném případě je
Bucket-Sort(A[0 ... n-1])
	for i <- 0 to n-1
		do vlož A[i] do seznamu B[floor(n*A[i])]
	for i <- 0 to n-1
		do Sort(B[i])
	vlož postupně prvky z B[0], ..., B[n-1] do pole A

Výpočet složitosti v nejhorším případě

  • To je případ, když všechny prvky z byly umístěny do jednoho seznamu
  • Složitost bucket Sortu tedy je:

Předchozí: Heap sort a jeho složitost Následující: Pořádkové statistiky Celý okruh: 1. Teoretické základy informačních technologií