For faster navigation, this Iframe is preloading the Wikiwand page for Hitro urejanje.

Hitro urejanje

Hitro urejanje
Hitro urejanje seznama naključnih števil. Vodoravne črte so delilni elementi (pivoti).
Osnovni podatki
Vrsta:algoritem za urejanje podatkov
Podatkovna struktura:tabela
Časovna zahtevnost
Zgornja meja zahtevnosti:O(n2)
Spodnja meja zahtevnosti:O(n log n)
Pričakovana zahtevnost:O(n log n)
Prostorska zahtevnost
Prostorska zahtevnost:O(n)

Hitro urejanje ali urejanje s porazdelitvami (angleško 'QuickSort') je eden od najbolj znanih in uporabljanih algoritmov za urejanje podatkov; razvil ga je C. A. R. Hoare.

Algoritem razdeli zaporedje na dve podzaporedji tako, da so v prvem delu tabele vsi elementi manjši od elementov v drugem delu tabele. Enak postopek se nato izvede nad obema podzaporedjema, dokler po principu rekurzije ne pridemo do urejenega zaporedja.

Delovanje

[uredi | uredi kodo]

Zaporedje razdelimo na podzaporedji tako, da izberemo nek delilni element (pivot) iz zaporedja, nato pa zaporedje pregledujemo z leve in desne strani. Levi indeks povečujemo, dokler ne naletimo na element, ki je večji ali enak delilnemu elementu. Zatem zmanjšujemo desni indeks, dokler ne naletimo na element, ki je manjši ali enak delilnemu elementu. Ko naletimo na takšna elementa in se levi in desni indeks še nista prekrižala, zamenjamo položaj teh dveh elementov. Kadar pa se indeksa prekrižata, zamenjamo desni indeks z mejnim elementom.

Postopek delitve nato rekurzivno ponovimo nad podzaporedjema, pri čemer podzaporedji ne vsebujeta delilnega elementa, saj je le-ta že na pravilnem mestu na sredini med njima. Ko pridemo do podzaporedij dolžine ena, je celotno zaporedje urejeno.

Izbira delilnega elementa

[uredi | uredi kodo]

Z dobro izbiro delilnega elementa lahko preprečimo, da bi se zgodil najslabši primer in bi algoritem potreboval operacij.

Največkrat uporabljani delilni elementi so:

  • prvi element
  • zadnji element
  • naključno izbran element
  • sredinski element ali mediana

Zahtevnost

[uredi | uredi kodo]

Časovna zahtevnost je v povprečju , v najslabšem primeru pa .

Psevdokoda

[uredi | uredi kodo]

V preprosti psevdokodi lahko ta algoritem izrazimo takole:

 funkcija HitroUrejanje(q)
     var seznam manjši, pivotSeznam, večji
     če dolžina(q) ≤ 1
         vrni q
     izberi vrednost delilnega elementa pivot izmed q
     za vsak x v q
         če x < pivot potem dodaj x k manjši
         če x = pivot potem dodaj x k pivotSeznam
         če x > pivot potem dodaj x k večji
     vrni poveži(HitroUrejanje(manjši), pivotSeznam, HitroUrejanje(večji))
{{bottomLinkPreText}} {{bottomLinkText}}
Hitro urejanje
Listen to this article

This browser is not supported by Wikiwand :(
Wikiwand requires a browser with modern capabilities in order to provide you with the best reading experience.
Please download and use one of the following browsers:

This article was just edited, click to reload
This article has been deleted on Wikipedia (Why?)

Back to homepage

Please click Add in the dialog above
Please click Allow in the top-left corner,
then click Install Now in the dialog
Please click Open in the download dialog,
then click Install
Please click the "Downloads" icon in the Safari toolbar, open the first download in the list,
then click Install
{{::$root.activation.text}}

Install Wikiwand

Install on Chrome Install on Firefox
Don't forget to rate us

Tell your friends about Wikiwand!

Gmail Facebook Twitter Link

Enjoying Wikiwand?

Tell your friends and spread the love:
Share on Gmail Share on Facebook Share on Twitter Share on Buffer

Our magic isn't perfect

You can help our automatic cover photo selection by reporting an unsuitable photo.

This photo is visually disturbing This photo is not a good choice

Thank you for helping!


Your input will affect cover photo selection, along with input from other users.

X

Get ready for Wikiwand 2.0 🎉! the new version arrives on September 1st! Don't want to wait?