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
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