Iskanje k-tega elementa v seznamu

Iskanje k-tega elementa v seznamu

Avtor: Anja Vencelj

Naloga

Pri testiranju za športno-vzgojni karton se je testirala cela generacija sedmošolcev neke šole. Za namene raziskave, mora učitelj izmed vseh podatkov o masi učencev določiti maso učenca, ki je 10. po velikosti, nato še maso učenca, ki je 20. po velikosti, 30., 40., 50. in 60. Pomagaj učitelju športne vzgoje in mu napiši funkcijo, ki za parametra dobi celoten seznam podatkov in številko iskanega podatka in vrne vrednost tega podatka.

Pri tem si pomagaj z rekurzijo in ne uporabljaj metode  sort  , ki sortira podatke po velikosti.

Osnovna ideja

Imejmo nek krajši seznam s 5 elementi.

 sez = [3,5,4,6,1] 

Poiščimo 4. element po velikosti iz tega seznama.

Za začetek si izberimo prvi element tega seznama in ga primerjajmo z ostalimi elementi. To je število 3 - ta element imenujemo PIVOT. Hkrati tvorimo dva nova seznama: v 1. seznam (imenujmo ga sezME] dajajmo elemente-števila, ki so manjši ali enaki pivotu, v drug seznam (sezV) pa dajmo elemente-števila, ki so večji od pivota.

 pivot = 3

sezME = [1]
sezV = [5,4,6] 

Kje naj sedaj iščemo četrti element po velikosti?

V sezME je zgolj en element, takoj za njim po velikosti je pivot, v sezV pa so trije elementi. Ker iščemo 4. element prvotnega seznama, ga moramo iskati v seznamu sezV. Ta element bo v sezV 2. po velikosti(ker smo že izločili dva najmanjša elementa - element v sezME in pivot). Z enakim postopkom kot prej, spet poiščimo element v sezV:

 sez= sezV =[5,4,6]

pivot = 5

sezME = [4]
sezV = [6] 

Ker smo iskali 2. element v seznamu, in ker je v sezME zgolj en element, je iskani element kar pivot - to je število 5.

Funkcija v Pythonu

Poskusimo to idejo sedaj prenesti v definicijo funkcije v Pythonu:

Python datoteka

0%
0%