Algoritem za urejanje s kopico

Iz E-študij, proste zakladnice študentskega znanja

Skoči na: navigacija, iskanje

Sortirani elementi so razdeljeni na urejeni (običajno desni) del in na neurejeni del (običajno levi).

Urejamo tako, da najprej zgradimo kopico. Običajno za koren kopice izberemo 1. element v tabeli. Neurejeno kopico zgradimo oz. uredimo od spodaj navzgor.

Binarno drevo pa se da tudi lepo zgraditi v tabeli. Vsak oče ima dva sinova, in sicer če je oče i, potem sta v sistemih, kjer indeksi začnejo z 1, sinova 2i in 2i+1, kjer pa indeksi začnejo z 0, pa sta sinova 2i+1 in 2i+2. V polni kopici so listi vsi elementi v neurejenem delu od n/2 naprej, če je neurejeni del dolg n.

Grajenje kopice in vstavljanje najmanjšega elementa ni časovno tako potratno, dražje je popravljanje kopice.

Časovna zahtevnost algoritma

T(n) = T(gradnja kopice) + nT(popravljanje kopice) =
= O(n) + nlog(n)
= O(nlogn)


Postopek

Kopica mora biti obratno urejena kot želimo podatke urediti na izhodu.

Primer urejanja v tabeli v naraščajočem vrstnem redu

  1. delamo iz desne proti levi in gledamo ali sta oba sinova manjša od očeta
  2. tako uredimo celotno drevo
  3. izločimo koren (največjega), tako da ga zamenjamo z zadnjim v tabeli, in ta element imamo za urejeni del tabele
  4. ponovimo 1 korak na za ena zmanjšani tabeli na podoben način delamo tudi grafični način
Osebna orodja
Imenski prostori
Različice
Dejanja
navigacija

Tiskanje/izvoz
orodja