55
Algoritmi i strukture podataka

Algoritmi i Strukture Podataka

Embed Size (px)

Citation preview

Page 1: Algoritmi i Strukture Podataka

Algoritmi i strukture podataka

Page 2: Algoritmi i Strukture Podataka

Opis kursa• ALGORITMI

– naredba– blok naredbi– razgranate strukture– ciklične strukture

• STRUKTURE PODATAKA– promenljive (statičke i dinamičke)– nizovi– liste– stek– redovi

• SORTIRANJA

Page 3: Algoritmi i Strukture Podataka

UvodUvod

Algorithms + Data Structures = Programs

Dva osnovna gradivna bloka za implementaciju programskih sistema

Struktura podataka – opis načina organizacije podataka

Algoritam – opis načina obrade podataka

Page 4: Algoritmi i Strukture Podataka

O algoritmimaO algoritmima Osobine

jedan ili više ulaza i izlaza nedvosmislenost i ostvarljivost naredbi konačno vreme izvršavanja

Determinističko ponašanje (ali i pseudoalgoritmi)

Mera efikasnosti – vremenska i prostorna složenost

Najčešće u pseudojeziku

Implementacija algoritama (jezik, mašina)Uvod

Page 5: Algoritmi i Strukture Podataka

O strukturama podatakaO strukturama podataka

Modelira objekte i podatke iz problema

Elementarni, primitivni tipovi

Složeni, struktuirani tipovi logička struktura fizička struktura

Osnovni načini struktuiranja homogeni - nizovi nehomogeni - zapisi

Uvod

Page 6: Algoritmi i Strukture Podataka

Uvod O strukturama podataka

Alg

ori

tmi i st

rukt

ure

podata

ka

ZapisZapis

Agregacija elemenata različitog tipa (polja)

Tretira se kao logička celina

Koristi se u implementaciji dinamičkih struktura datoteka

Operacije obično nad poljima

Page 7: Algoritmi i Strukture Podataka

Uvod O strukturama podataka

Alg

ori

tmi i st

rukt

ure

podata

ka

ZapisZapis

Smeštanje u memorijia) kontinualna alokacija poljab) vezivanje polja za početak

reči

marka

snaga

snagagodina

godinamarka

a1

a1

a)

b)

100 110 114

112 116100

Page 8: Algoritmi i Strukture Podataka

Podele strukturaPodele strukturaA

lgori

tmi i st

rukt

ure

podata

ka

Po relacijama elemenata linearne nelinearne

Po mogućnosti promene veličine statičke dinamičke

Po mestu čuvanja unutrašnje (u operativnoj

memoriji) spoljašnje (datoteke)

Uvod O strukturama podataka

Page 9: Algoritmi i Strukture Podataka

Uvod O strukturama podataka

Memorijska reprezentacijaMemorijska reprezentacija

Sekvencijalna

Fizički i logički poredak isti

Pristup elementima direktan

Obično za linearne strukture

a)

b)

Page 10: Algoritmi i Strukture Podataka

Uvod O strukturama podataka

Memorijska reprezentacijaMemorijska reprezentacija

Ulančana

Fizički i logički poredak različiti

Pristup elementima indirektan

Koristi pokazivački mehanizam

Obično za nelinearne strukture

Page 11: Algoritmi i Strukture Podataka

Programska naredbaProgramska naredba

• Osnovna jedinica obrade je naredba• Jednostaven (proste) naredbe se sastoje

od izraza i eventualno znaka ; (C, Java)• Složene naredbe određuju redosled

izvršavanja naredbi• U složenim programskim jezicima

upravljačke strukture:• sekvence• selekcije• petlje• skokovi

Page 12: Algoritmi i Strukture Podataka

Blok naredbi

•Početak se označava sa {, a kraj sa }•Sekvenca je upravljačka struktura sa nizom

sukcesivnih naredbi

{

naredba1;

naredba2;

....

}

Page 13: Algoritmi i Strukture Podataka

Razgranate strukture

• IF i IF-ELSE struktura• izbor jedne od dve naredbe if (izraz) naredba1 [else naredba2]• izraz ≠ 0 naredba1• izraz = 0 naredba2

bez else – uslovni preskoknačini pisanja

Page 14: Algoritmi i Strukture Podataka

Primeri if – else

if (a>b) {t=a; a=b; b=t;}

if (mesec == 12){ mesec=1; ++godina;}else ++mesec;

Page 15: Algoritmi i Strukture Podataka

if – else

• naredbe u if-u mogu biti i složene upravljačke naredbe

• odsustvo završne reči – problem kod ugneždenih if sa jednim else

• else tada pripada najbližem ranije neuparenom if-u

Page 16: Algoritmi i Strukture Podataka

if – else

if (izraz1) if (izraz2) naredba1; else naredba2;

if (izraz1) { if (izraz2) naredba1; } else naredba2;

Page 17: Algoritmi i Strukture Podataka

if – else if … – else

if (izraz1) naredba1;else if (izraz2) naredba2;else if (…) …else if (izrazN) naredbaN;else naredba0;

Page 18: Algoritmi i Strukture Podataka

Generalisana selekcijaif – else if … – else

izbor jedne od više naredbi

• prvi izraz ≠0 određuje naredbu koja se izvršava

• ako su svi izrazi =0izvršava se naredba u else-u

Page 19: Algoritmi i Strukture Podataka

if – else if … – else

poredak pisanja je važan!

• izvršava se samo jedna naredba ako je zadovoljno više uslova

• kao i zbog eventualnih bočnih efekata

ugneždavanje osnovnih selekcija

Page 20: Algoritmi i Strukture Podataka

if – else if … – else

if (bodovi>90)

ocena=10;

else if (bodovi>80)

ocena=9;

else if (bodovi>50)

ocena=6;

else

ocena=5;

Page 21: Algoritmi i Strukture Podataka

Selekcija sa skretnicom switch

• niz naredbi u {} (sastoji se iz podnizova naredbi za pojedine opcije bez {})

• selektorski celobrojni izraz u ()određuje ulaz odakle počinje izvršavanje

Page 22: Algoritmi i Strukture Podataka

switch

switch (izraz)

{

case v1: niz_naredbi_1;

case v2: niz_naredbi_2;

default: niz_naredbi_0;

case vN: niz_naredbi_N;

}

Page 23: Algoritmi i Strukture Podataka

switch

• može isti ulaz za više vrednosti

• default (kad vrednost izraza nije nijedna od zadatih)

• default samo jedan, a može i da izostane

Page 24: Algoritmi i Strukture Podataka

switch

• poredak je vrlo važan (za razliku od Pascal-a)

• ako se na kraju svakog podniza ubaci break –ekvivalentno sa Pascal case

Page 25: Algoritmi i Strukture Podataka

switch

switch (i+j*k){

case 1: printf (“Unesite i, j: ”);

scanf (“%d%d”, i, j);

case 2: case 3: case 4:

k=i++*j; break;

case ‘A’: case ‘O’:

j=k/--i; break;

default:

printf (“Neispravni podaci!\n”);

}

Page 26: Algoritmi i Strukture Podataka

Ciklusi

• kontrolisano ponavljanje proste ili složene naredbe u zavisnosti od uslova

• postoji i način eksplicitnog završavanja ciklusa

Page 27: Algoritmi i Strukture Podataka

Ciklusi

kontrolisano ponavljanje proste ili složene naredbe zavisno od uslova

• while - osnovni ciklus sa izlaskom na vrhu

• for - generalisani ciklus sa izlaskom na vrhu

• do - ciklus sa izlaskom na dnu

Page 28: Algoritmi i Strukture Podataka

while

osnovni ciklus sa izlaskom na vrhu

while (uslov) naredba

uslov ostanka (pre naredbe):• ako je ≠0 izvršava se naredba• ako je =0 napušta se petlja

0, 1 ili više iteracija

Page 29: Algoritmi i Strukture Podataka

while

• Primer:

s=0; i=0;

while (i<n) {

s+=a[i]*b[i];

i++;

}

Page 30: Algoritmi i Strukture Podataka

do – while

ciklus sa izlaskom na dnu

do naredba while (uslov) ;

uslov ostanka (nakon naredbe): • ako je ≠0, opet se izvršava naredba• ako je =0, napušta se petlja

1 ili više iteracija

Page 31: Algoritmi i Strukture Podataka

do – while

• Primer:

s=0; i=0;

do {

s+=a[i]*b[i];

i++;

} while (i<n);

• radi pogrešno za n <= 0

Page 32: Algoritmi i Strukture Podataka

for

generalisani ciklus sa izlaskom na vrhu

for (izraz1; izraz2; izraz3) naredba• izraz1

početne radnje (samo jednom)• izraz2

≠0 uslov nastavljanja ciklusa• izraz3

završne radnje (posle iteracije)

Page 33: Algoritmi i Strukture Podataka

for

for (izraz1; izraz2; izraz3) {…}

izraz1;

while (izraz2) {

izraz3;

}

Page 34: Algoritmi i Strukture Podataka

for

• centralizovan kontrolni mehanizam dobra preglednost (pogotovo važno u ugneždenim petljama)

• sva tri izraza opciono (ali ; moraju ostati)

• ako nema izraz2 uslov ispunjen

Page 35: Algoritmi i Strukture Podataka

for

• for ( ; ; ) ;beskonačna petlja

• for ( ; ; ) {…}može se izaći forsirano iz bloka

• moguća greška: ; iza zagrade prazno telo

Page 36: Algoritmi i Strukture Podataka

for

• pogodan za brojačke cikluse, mada je opštiji

for (i=pocetak; i<kraj; i += korak) {}

(korak>0)

for (i=pocetak; i>kraj; i += korak) {}

(korak<0)

Page 37: Algoritmi i Strukture Podataka

for

• univerzalno rešenje

for (i=poc; k>0?i<kraj:i>kraj; i+=k){

}

• kao brojač može se koristiti i znakovna promenljiva

Page 38: Algoritmi i Strukture Podataka

for

• skalarni proizvod:

for (s=0, i=0; i<n; i++) s+=a[i]*b[i];

for (s=0, i=0; i<n; s+=a[i]*b[i], i++);

• ne treba da izrazi1,2,3 sadrže radnje koje se ne odnose na održavanje ciklusa

Page 39: Algoritmi i Strukture Podataka

for

razlike u odnosu na Pascal for:

• opštija (promenljivi korak, može i proizvoljan uslov)

• parametri petlje mogu biti promenjeni u samoj petlji

• kontrolna promenljiva zadržava vrednost po izlasku

Page 40: Algoritmi i Strukture Podataka

Skokovi

upravljačke naredbe:

prenose tok izvršavanja naimplicitno ili eksplicitno odredište

• narušavaju struktuiranost, koristiti samo kad treba

Page 41: Algoritmi i Strukture Podataka

Linearne strukture podatakaLinearne strukture podatakaA

lgori

tmi i st

rukt

ure

podata

ka

Linearna lista (a1, a2, ..., an), n ≥ 0

Apstraktni tip nezavisno od implementacije

Strukturno svojstvo – jednodimenzionalnost

Operacije obilazak po poretku 1..n pretraživanje pristup elementu umetanje brisanje, ...

Page 42: Algoritmi i Strukture Podataka

Linearne strukture podatakaLinearne strukture podatakaA

lgori

tmi i st

rukt

ure

podata

ka

Implementacija sekvencijalna – niz ulančana – ulančana

lista

Disciplina pristupa LIFO - stek FIFO - red

Page 43: Algoritmi i Strukture Podataka

Linearne strukture podataka

Alg

ori

tmi i st

rukt

ure

podata

ka

NizoviNizovi Niz - homogeni struktuirani tip

Indeks – pozicija elementa u nizu

X[l:u] = X[i], i = l, l + 1, … , u - 1, u

Direktan pristup elementu bez ograničenja

Višedimenzionalni nizovi (nizovi nizova)

Selekcija elementa

Operacije

Page 44: Algoritmi i Strukture Podataka

Linearne strukture podataka Nizovi

Alg

ori

tmi i st

rukt

ure

podata

ka

SmeSmeštanje vektoraštanje vektora Sekvencijalna reprezentacija,

ne razdvaja se logički koncept od implementacije

Ai = Al + (i - l)s (jedan element zauzima s reči)

Efikasan, direktan pristup,neefikasno umetanje i brisanjeX [l] X [i] X [u]

A l A i

s

X

Predstavljanje nizova u memoriji

Page 45: Algoritmi i Strukture Podataka

Linearne strukture podataka Nizovi

Alg

ori

tmi i st

rukt

ure

podata

ka

SmeSmeštanje vektoraštanje vektora Kontinualno

prostorno efikasno

neefikasan pristup

Sa dopunjavanjem (padding) iskorišćenje prostora Su = s /

s efikasniji pristup

X [l]

X [l+1] X [l+2]

X [l]

X[l+1] X [l+2]

Predstavljanje nizova u memoriji

Page 46: Algoritmi i Strukture Podataka

Linearne strukture podataka Nizovi

Alg

ori

tmi i st

rukt

ure

podata

ka

SmeSmeštanje vektoraštanje vektora

Pakovanje k = 1/s elemenata u jednoj reči prostorno iskorišćenje Su = ks /

ks Ai = Al + (i - l)/k

pozicija u reči (i - l) mod k

X [l]

X [l+6] X [l+5]

Predstavljanje nizova u memoriji

Page 47: Algoritmi i Strukture Podataka

Linearne strukture podataka Nizovi

Alg

ori

tmi i st

rukt

ure

podata

ka

Smeštanje matricaSmeštanje matrica

Cilj - efikasna adresna funkcija

Linearizacija po vrstama (row-major) po kolonama (column-

major)

X

1

i, ji,1 i,N

M , jM ,1 M ,N

i

M

1 j N

1, j1,1 1,N

Predstavljanje nizova u memoriji

Page 48: Algoritmi i Strukture Podataka

Linearne strukture podataka Nizovi

Alg

ori

tmi i st

rukt

ure

podata

ka

Smeštanje po vrstamaSmeštanje po vrstama X[l1:u1, l2:u2]

Ai,j = Al1,l2 + ((i - l1)(u2 - l2 + 1) + j - l2)s

X[1:M,1:N]

Ai,j = A1,1 + ((i - 1)N + j - 1)s

ne zavisi od broja vrsta

1, j1,1 1,N M ,jM ,1 M ,N......

vrsta 1 vrsta i vrsta M

i,ji,1 i,N

Predstavljanje nizova u memoriji

Page 49: Algoritmi i Strukture Podataka

Linearne strukture podataka Nizovi Predstavljanje nizova u memoriji

Alg

ori

tmi i st

rukt

ure

podata

ka

Smeštanje po kolonamaSmeštanje po kolonama X[l1:u1, l2:u2]

Ai,j = Al1,l2 + ((j – l2)(u1 – l1 + 1) + i – l1)s

X[1:M,1:N]

Ai,j = A1,1 + ((j - 1)M + i - 1)s

ne zavisi od broja kolona

i,11,1 M ,1 i,j1,j M ,j i,N1,N M ,N......

kolona 1 kolona j kolona N

Page 50: Algoritmi i Strukture Podataka

Linearne strukture podataka Nizovi Predstavljanje nizova u memoriji

Alg

ori

tmi i st

rukt

ure

podata

ka

Višedimenzionalni nizoviVišedimenzionalni nizovi

X[1:u1, 1:u2, ..., 1:un]

Generalizovano smeštanje po vrstama

X[1, ..., 1, 1] X[1, ..., 1, 2] X[1, ..., 1, un]

X[1, ..., 2, 1] X[1, ..., 2, 2] X[1, ..., 2, un]

...

X[u1, ..., un-1, 1] X[u1, ..., un-1, 2] X[u1, ..., un-1, un]

Leksikogafski poredak

Page 51: Algoritmi i Strukture Podataka

Linearne strukture podataka Nizovi Predstavljanje nizova u memoriji

Alg

ori

tmi i st

rukt

ure

podata

ka

Višedimenzionalni nizoviVišedimenzionalni nizovi

Ai1,.., in = A1,..,1 + ((i1 - 1)u2u3...un + (i2 - 1) u3u4...un +…

+ (in-1 - 1)un + in - 1)s

Efikasno izračunavanjeoffset = 0

for j = 1 to n do

offset = U [j ] offset + I [j ] - 1

end_for

A = A1,..,1 + s * offset Implikacije načina smeštanja

Page 52: Algoritmi i Strukture Podataka

a)0

xx

xX

b)X

xx

x0

c)0

00

0X

d)X

00

00

Linearne strukture podataka Nizovi

Alg

ori

tmi i st

rukt

ure

podata

ka

Optimizacije pri smeštanjuOptimizacije pri smeštanju Cilj – ušteda prostora, ali ipak efikasan

pristup

Primer - trougaone matrice

Page 53: Algoritmi i Strukture Podataka

Linearne strukture podataka Nizovi Optimizacije pri smestanju nizova

Alg

ori

tmi i st

rukt

ure

podata

ka

Trougaona matricaTrougaona matrica

Npr. donja trougaona matricaX[i,j] = 0 , i < j

Primena smeštanja po vrstama

X[1,1] X[2,1] X[2,2] X[3,1] X[3,2] X[3,3] ...

Ušteda u prostoru oko 50%

Ai,j = A1,1 + (i(i - 1)/2 + j - 1)s ako je i j

Page 54: Algoritmi i Strukture Podataka

1 n+12

X

Y

n1

X

Y

1

n n

12

a) b)

Linearne strukture podataka Nizovi Optimizacije pri smestanju nizova

Alg

ori

tmi i st

rukt

ure

podata

ka

Trougaone matriceTrougaone matrice

X[i,j] = Z[i,j +1] ako je i j X[i,j] = 0 za i > j

Y[i,j] = Z[i,j] ako je i j Y[i,j] = 0 za i < j

Page 55: Algoritmi i Strukture Podataka

0

0

0

0

9

0

0

0

0

0

0

4

0

0

0

0

0

5

0

8

0

0

0

0

0

0

0

11

0

0

15

0

0

0

0

X =

4

5

11

9

8

15

V

3

4

6

1

4

7

C

1

2

2

4

4

5

R

Linearne strukture podataka Nizovi Optimizacije pri smestanju nizova

Alg

ori

tmi i st

rukt

ure

podata

ka

Retki nizoviRetki nizovi Relativno veliki broj nultih elemenata

Pamte se samo nenulti elementi – ušteda prostora

Vektorska reprezentacija

Neefikasne operacije!