Urejanje z izbiranjem

Recimo, da imamo vhodno zaporedje [a0, a1, ..., an-1] in bi ga radi uredili naraščajoče. Ko bo urejeno, bo torej na začetku zaporedja stal najmanjši element. Tu že vidimo namig, kako se lahko lotimo urejanja zaporedja: poiščimo najmanjši element in ga postavimo na začetek zaporedja. Ta zdaj torej že stoji na pravem mestu in se nam v nadaljevanju z njim ni več treba ukvarjati. Zdaj lahko poiščemo najmanjši element izmed preostanka zaporedja (to bo drugi najmanjši element celotnega zaporedja) in ga postavimo na začetek tega preostanka (torej na drugo mesto v zaporedju, takoj za najmanjšim). Zdaj je torej tudi drugi najmanjši element na pravem mestu in se nam z njim ni več treba ukvarjati. Tako nadaljujemo, dokler ni urejeno celotno zaporedje.

Vaja


Oglejmo si konkreten primer. Recimo, da imamo zaporedje:

[5, 8, 7, 2, 3]

Najmanjši element je 2. Premaknimo ga na začetek, na njegovo mesto pa premaknimo element, ki je bil prej na začetku (tej operaciji pravimo zamenjava dveh elementov); dobimo:

[2 | 8, 7, 5, 3]

Z navpično črto smo razmejili del tabele, ki je že urejen (levo od črte), od dela, ki še ni (desno od črte). Najmanjši element v neurejenem delu tabele je 3; zamenjajmo ga s tistim na začetku neurejenega dela (to je 8) in dobimo:

[2, 3 | 7, 5, 8]

V naslednjem koraku ugotovimo, da je najmanjši element v neurejenem delu tabele 5; zamenjajmo ga z elementom 7 in dobimo:

[2, 3, 5 | 7, 8]

Zdaj je najmanjši element v neurejenem delu tabele 7, ki je že na pravem mestu, zato z njim nimamo nobenega dela več:

[2, 3, 5, 7 | 8]

Od neurejenega dela tabele nam je zdaj ostal en sam element, ki je hkrati tudi največji element celotne tabele. Nahaja se na koncu tabele, kar je točno tam, kjer v urejeni tabeli mora biti, tako da je naše urejanje končano.

Dobljenemu postopku pravimo urejanje z izbiranjem (ang. selection sort), ker na vsakem koraku izberemo najmanjši element iz neurejenega dela tabele in ga postavimo na pravo mesto.