31.12.2014 Views

Seminarski rad: UĊenje algoritama u Pythonu - phy.hr - Prijava

Seminarski rad: UĊenje algoritama u Pythonu - phy.hr - Prijava

Seminarski rad: UĊenje algoritama u Pythonu - phy.hr - Prijava

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Python kod<br />

def InsertionSort(A):<br />

for j in range(1, len(A)):<br />

key = A[j]<br />

i = j - 1<br />

while (i >=0) and (A[i] > key):<br />

A[i+1] = A[i]<br />

i = i - 1<br />

A[i+1] = key<br />

Kada učenici vide sličnost, većina njihovog straha prema programiranju jednostavno nestaje.<br />

Ona takoĎer pomaže da pokažu interaktivne prirode Python. Mi koristimo računalo-projektor i<br />

zapravo tip u programu, što je samo 8 linija dugo. Najbolji<br />

dio je, možemo<br />

testirati algoritam jednostavno, upišete u slučaju teksta u obliku popisa:<br />

>>> x = [2,7,3,8,1] # create test case (stvoriti test slučaj)<br />

>>> InsertionSort(x) # call routine (poziva rutinu)<br />

>>> x # look at result (pogled na rezultat)<br />

[1, 2, 3, 7, 8]<br />

U smislu, Python daje udžbenik važnosti jer algoritmi predstavljaju<br />

u<br />

udžbeniku nisu višesamo pseudocode ili koraka teorijskih interesa samo, mogu vidjeti kako<br />

se lako ga jezapravo izvršiti algoritme koristeći podatke koje oni generiraju. U stvari, mi takoĎ<br />

erpokazuju da je isti broj, bez izmjena, <strong>rad</strong>i sasvim u redu s drugim tipovima<br />

podataka,uključujući i žice, torke, itd. Sortiranje je dobra polazna primjer, jer ne samo<br />

dakonstruira karte izravno, bez komplikacija sa memory management (biti riječi<br />

kasnije),ali parametar semantika takoĎer odgovara: duži donosi vrijednosti, dok su polja don<br />

osireferencu.<br />

3. HeapSort (gomila) poredaj i prioritet redovi<br />

Naš uvod nastavlja s HeapSort poredajem i prioritet redovima. Heap je struktura<br />

podataka koja predstavlja gotovo uravnoteženo binarno stablo koristeći niz A[1 .. n], gdje se<br />

lijevo i desno nalazi<br />

dječji element A[i] smješten na A[2i], A[2i+1], odnosno, i A[i]> = A[2i], A[2i+1]. HeapSort g<strong>rad</strong>i<br />

sortirani niz redova iz stražnjeg dijela polja prema naprijed jedan element u vrijeme<br />

vaĎenja najvećeg elementa iz skupine. U početku sortirani dio je prazan, i poziv na<br />

BuildHeap pretvara A[1 .. n] u skupini. Budući da iz skupine stavlja najveći element u A[1],<br />

u prvoj iteraciji smo ga izvaditi i staviti ga u A[n], koji je njegov ispravan sortirani položaj.<br />

Sljedeća iteracija ekstrakti drugi najveći element (iz A[1] opet) i stavlja ga u A[n-1], i sl., a to<br />

se nastavlja sve dok se sve ne sortira. Imajte na umu da se Heapify zove kao dio<br />

svakog koraka ekstrakcije. To je zato što ako mi razmijenimo A[1] i A[h], a zatim A[1 .. h-<br />

1] više ne zadovoljava <strong>hr</strong>pu nekretnina, ali budući da je još uvijek "skoro" <strong>hr</strong>pa -<br />

to jest, sve osim korijena položaj je još uvijek ispod gomile - to<br />

4

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!