algoritmi si programare (ap)dlucanu/cursuri/ap/resurse/... · · 2006-10-29iniţiere în...
TRANSCRIPT
![Page 1: Algoritmi si programare (AP)dlucanu/cursuri/ap/resurse/... · · 2006-10-29iniţiere în utilizarea unui limbaj de programare ... C Manual Complet, Bucuresti, Ed. Teora, 1998](https://reader034.vdocuments.net/reader034/viewer/2022042515/5aa860507f8b9a72188b8753/html5/thumbnails/1.jpg)
Algoritmi si programare (AP)
Dorel Lucanuhttp://www.infoiasi.ro/~dlucanu/
![Page 2: Algoritmi si programare (AP)dlucanu/cursuri/ap/resurse/... · · 2006-10-29iniţiere în utilizarea unui limbaj de programare ... C Manual Complet, Bucuresti, Ed. Teora, 1998](https://reader034.vdocuments.net/reader034/viewer/2022042515/5aa860507f8b9a72188b8753/html5/thumbnails/2.jpg)
Dorel Lucanu Algoritmica si programare
Obiective
Algoritmi: însuşirea unei gândiri algoritmicedezvoltarea abilitaţilor de proiectare de soluţii algoritmice însuşirea tehnicilor de utilizare a
principalelor structuri de date evaluarea timpului de execuţie in cazul cel mai nefavorabil
Programare iniţiere în utilizarea unui limbaj de programaredescrierea principalelor structuri de dateînsuşirea tehnicilor de bază în proiectarea programelor
![Page 3: Algoritmi si programare (AP)dlucanu/cursuri/ap/resurse/... · · 2006-10-29iniţiere în utilizarea unui limbaj de programare ... C Manual Complet, Bucuresti, Ed. Teora, 1998](https://reader034.vdocuments.net/reader034/viewer/2022042515/5aa860507f8b9a72188b8753/html5/thumbnails/3.jpg)
Dorel Lucanu Algoritmica si programare
Agenda disciplina
AlgoritmiLimbaj algoritmic, tablouri, structuri statice, structuri înlănţuiteliste liniarearbori binari, heap-uri, union-findgrafuri (ca structuri de date)sortare, căutareparadigme
Programareprezentarea graduata a limbajului C (ISO Standard) cu accent pe implementareastructurilor de date si a soluţiilor prezentatein prima parte
![Page 4: Algoritmi si programare (AP)dlucanu/cursuri/ap/resurse/... · · 2006-10-29iniţiere în utilizarea unui limbaj de programare ... C Manual Complet, Bucuresti, Ed. Teora, 1998](https://reader034.vdocuments.net/reader034/viewer/2022042515/5aa860507f8b9a72188b8753/html5/thumbnails/4.jpg)
Dorel Lucanu Algoritmica si programare
Evaluare
conditiiactivitatea la seminar (AS)activitatea la laborator (AL)testele scrise (TS)
criterii de promovareAS ≥ 5, AL ≥ 6, TS ≥ 4
formeAS: întrebări, participare la discuţii, soluţii
originaleAL: fiecare tema de laborator va fi notata cu note de la 1 la 10 TS: 2 teste scrise (săpt. 7,13), fiecare test conţinând 8 întrebări grilă şi o problemă.
![Page 5: Algoritmi si programare (AP)dlucanu/cursuri/ap/resurse/... · · 2006-10-29iniţiere în utilizarea unui limbaj de programare ... C Manual Complet, Bucuresti, Ed. Teora, 1998](https://reader034.vdocuments.net/reader034/viewer/2022042515/5aa860507f8b9a72188b8753/html5/thumbnails/5.jpg)
Dorel Lucanu Algoritmica si programare
Nota finala
normele ECTS (European Credit Transfer System)Punctaj Final (PF) = 10% AS + 40% AL +50% TS≤ 4 daca sunt indeplinite conditiile si NU sunt indeplinite criteriile de promovare,= 10 daca PF este in primii 10% din cei promovati (A)= 9 urmatorii 25% din cei promovati (B)= 8 urmatorii 30% din cei promovati (C)= 7 urmatorii 25% din cei promovati (D)= 6 urmatorii 10% din cei promovati (D)= 5 daca criteriile nu sunt indeplinite cu o eroare de 3% si activitatea generala justifica totusi o promovare la limita (max 5% din cei promovati)
![Page 6: Algoritmi si programare (AP)dlucanu/cursuri/ap/resurse/... · · 2006-10-29iniţiere în utilizarea unui limbaj de programare ... C Manual Complet, Bucuresti, Ed. Teora, 1998](https://reader034.vdocuments.net/reader034/viewer/2022042515/5aa860507f8b9a72188b8753/html5/thumbnails/6.jpg)
Dorel Lucanu Algoritmica si programare
Bibliografie
T.H. Cormen, C.E. Leiserson, R.L. Rivest: Introducere in Algoritmi, Computer LibrisAgora, 2000Herbert Schildt: C Manual Complet, Bucuresti, Ed. Teora, 1998resurse electronice
a se consulta pagina cursuluihttp://thor.info.uaic.ro/~dlucanu/ap/ap.html
![Page 7: Algoritmi si programare (AP)dlucanu/cursuri/ap/resurse/... · · 2006-10-29iniţiere în utilizarea unui limbaj de programare ... C Manual Complet, Bucuresti, Ed. Teora, 1998](https://reader034.vdocuments.net/reader034/viewer/2022042515/5aa860507f8b9a72188b8753/html5/thumbnails/7.jpg)
Dorel Lucanu Algoritmica si programare
Curs 1 - Agenda
limbaj algoritmictablouristructuricalculul unui programproblema rezolvata de un programtimpul de executie
![Page 8: Algoritmi si programare (AP)dlucanu/cursuri/ap/resurse/... · · 2006-10-29iniţiere în utilizarea unui limbaj de programare ... C Manual Complet, Bucuresti, Ed. Teora, 1998](https://reader034.vdocuments.net/reader034/viewer/2022042515/5aa860507f8b9a72188b8753/html5/thumbnails/8.jpg)
Dorel Lucanu Algoritmica si programare
Algoritm
algoritm = o secventa finita de pasi aranjataintr-o ordine logica specifica cu proprietatea ca, atunci cand este executata, produce o solutiecorecta la o problema data.exemplu: reteta culinara
algoritm calculator (“computer algorithm”) = un algoritm pentru care secventa de pasi esteexecutata de un calculator
limbaj algoritmic = un limbaj cu care suntdescrisi algoritmii
![Page 9: Algoritmi si programare (AP)dlucanu/cursuri/ap/resurse/... · · 2006-10-29iniţiere în utilizarea unui limbaj de programare ... C Manual Complet, Bucuresti, Ed. Teora, 1998](https://reader034.vdocuments.net/reader034/viewer/2022042515/5aa860507f8b9a72188b8753/html5/thumbnails/9.jpg)
Dorel Lucanu Algoritmica si programare
Tip de date: definitii
tip de date = colectie de entitati de tip data (obiecte reprezentabile in memoriacalculatorului) si un set de operatii pesteaceste obiecte
tip de date abstract = tip de data organizatin asa fel incat specificarea obiectelor sispecificarea operatiilor este independenta de reprezentarea obiectelor si implementareaoperatiilor
model standard = model utilizat pentruspecificarea tipurilor de data abstracte (bazatpe notatii matematice)
![Page 10: Algoritmi si programare (AP)dlucanu/cursuri/ap/resurse/... · · 2006-10-29iniţiere în utilizarea unui limbaj de programare ... C Manual Complet, Bucuresti, Ed. Teora, 1998](https://reader034.vdocuments.net/reader034/viewer/2022042515/5aa860507f8b9a72188b8753/html5/thumbnails/10.jpg)
Dorel Lucanu Algoritmica si programare
Tip de date abstract: exemple
INTobiecte: int = {. . . –2, –1, 0, 1, 2, . . . }operatii:
adunareaintrare: a, b ∈ intiesire: a + b
. . .BOOL
obiecte: bool = {false, true}operatii:
conjunctiaintrare: a, b ∈ booliesire: a ∧ b (a and b)
. . .
![Page 11: Algoritmi si programare (AP)dlucanu/cursuri/ap/resurse/... · · 2006-10-29iniţiere în utilizarea unui limbaj de programare ... C Manual Complet, Bucuresti, Ed. Teora, 1998](https://reader034.vdocuments.net/reader034/viewer/2022042515/5aa860507f8b9a72188b8753/html5/thumbnails/11.jpg)
Dorel Lucanu Algoritmica si programare
Limbaj algoritmic
modelarea memorieitipuri de date elementareinstructiunitipuri de date structurate de nivel joscalcultimpul de executie
![Page 12: Algoritmi si programare (AP)dlucanu/cursuri/ap/resurse/... · · 2006-10-29iniţiere în utilizarea unui limbaj de programare ... C Manual Complet, Bucuresti, Ed. Teora, 1998](https://reader034.vdocuments.net/reader034/viewer/2022042515/5aa860507f8b9a72188b8753/html5/thumbnails/12.jpg)
Dorel Lucanu Algoritmica si programare
variabila = (nume, atribute, adresa)
Modelarea memoriei
xadr
int
*p int
p int*
adradr
pointer
![Page 13: Algoritmi si programare (AP)dlucanu/cursuri/ap/resurse/... · · 2006-10-29iniţiere în utilizarea unui limbaj de programare ... C Manual Complet, Bucuresti, Ed. Teora, 1998](https://reader034.vdocuments.net/reader034/viewer/2022042515/5aa860507f8b9a72188b8753/html5/thumbnails/13.jpg)
Dorel Lucanu Algoritmica si programare
notatia grafica scurta
Modelarea memoriei
xadr
int
adr
*p int
p int*adr
![Page 14: Algoritmi si programare (AP)dlucanu/cursuri/ap/resurse/... · · 2006-10-29iniţiere în utilizarea unui limbaj de programare ... C Manual Complet, Bucuresti, Ed. Teora, 1998](https://reader034.vdocuments.net/reader034/viewer/2022042515/5aa860507f8b9a72188b8753/html5/thumbnails/14.jpg)
Dorel Lucanu Algoritmica si programare
Tipuri de date elementare
numere intreginumere rationalevalori booleenepointeri...
![Page 15: Algoritmi si programare (AP)dlucanu/cursuri/ap/resurse/... · · 2006-10-29iniţiere în utilizarea unui limbaj de programare ... C Manual Complet, Bucuresti, Ed. Teora, 1998](https://reader034.vdocuments.net/reader034/viewer/2022042515/5aa860507f8b9a72188b8753/html5/thumbnails/15.jpg)
Dorel Lucanu Algoritmica si programare
Atribuirea
sintaxa⟨variabila⟩ ← ⟨expresie⟩
latura ← 217lung_drum ← sqrt(5.0)*latura
latura int
lung_drum real
217sqrt(5.0)*217485.2267
![Page 16: Algoritmi si programare (AP)dlucanu/cursuri/ap/resurse/... · · 2006-10-29iniţiere în utilizarea unui limbaj de programare ... C Manual Complet, Bucuresti, Ed. Teora, 1998](https://reader034.vdocuments.net/reader034/viewer/2022042515/5aa860507f8b9a72188b8753/html5/thumbnails/16.jpg)
Dorel Lucanu Algoritmica si programare
Atribuirea
Cazul pointerilor*p ← 147
adr
*p int
p int*adr
147
![Page 17: Algoritmi si programare (AP)dlucanu/cursuri/ap/resurse/... · · 2006-10-29iniţiere în utilizarea unui limbaj de programare ... C Manual Complet, Bucuresti, Ed. Teora, 1998](https://reader034.vdocuments.net/reader034/viewer/2022042515/5aa860507f8b9a72188b8753/html5/thumbnails/17.jpg)
Dorel Lucanu Algoritmica si programare
if
sintaxaif ⟨expresie⟩then ⟨secventa_instructiuni⟩else ⟨secventa_instructiuni⟩
semanticaif ethen i1else i2
1. se evalueaza e2. daca rezultatul este adevarat atunci executa
i1altfel executa i2
![Page 18: Algoritmi si programare (AP)dlucanu/cursuri/ap/resurse/... · · 2006-10-29iniţiere în utilizarea unui limbaj de programare ... C Manual Complet, Bucuresti, Ed. Teora, 1998](https://reader034.vdocuments.net/reader034/viewer/2022042515/5aa860507f8b9a72188b8753/html5/thumbnails/18.jpg)
Dorel Lucanu Algoritmica si programare
if - exemple
calcululul min(a,b) - varianta 1if (a < b)then min ← aelse min ← b
calcululul min(a,b) - varianta 1min ← aif (b < a) then min ← b
![Page 19: Algoritmi si programare (AP)dlucanu/cursuri/ap/resurse/... · · 2006-10-29iniţiere în utilizarea unui limbaj de programare ... C Manual Complet, Bucuresti, Ed. Teora, 1998](https://reader034.vdocuments.net/reader034/viewer/2022042515/5aa860507f8b9a72188b8753/html5/thumbnails/19.jpg)
Dorel Lucanu Algoritmica si programare
while
sintaxawhile (⟨expresie⟩) do
⟨secventa_instructiuni⟩semanticawhile (e) do
i1...ik
1. se evalueaza e2. daca rezultatul este adevarat
a) se executa instructiunile i1, ..., ikb) se reia procesul de la pasul 1
3. altfel, executia instructiunii while se termina
![Page 20: Algoritmi si programare (AP)dlucanu/cursuri/ap/resurse/... · · 2006-10-29iniţiere în utilizarea unui limbaj de programare ... C Manual Complet, Bucuresti, Ed. Teora, 1998](https://reader034.vdocuments.net/reader034/viewer/2022042515/5aa860507f8b9a72188b8753/html5/thumbnails/20.jpg)
Dorel Lucanu Algoritmica si programare
while - exemple
cel mai mic k a.i. 7k ≥ n pentru un n datk ← 0sapte_la_k ← 1while (sapte_la_k < n) do
k ← k+1sapte_la_k ← sapte_la_k * 7
![Page 21: Algoritmi si programare (AP)dlucanu/cursuri/ap/resurse/... · · 2006-10-29iniţiere în utilizarea unui limbaj de programare ... C Manual Complet, Bucuresti, Ed. Teora, 1998](https://reader034.vdocuments.net/reader034/viewer/2022042515/5aa860507f8b9a72188b8753/html5/thumbnails/21.jpg)
Dorel Lucanu Algoritmica si programare
repeat
sintaxarepeat
⟨secventa_instructiuni⟩until ⟨expresie⟩
semanticarepeat
i1...ik
until (e)1. se executa instructiunile i1, ..., ik2. se evalueaza e3. daca rezultatul este fals, se reia procesul
de la pasul 14. altfel, executia instructiunii repeat se
termina
![Page 22: Algoritmi si programare (AP)dlucanu/cursuri/ap/resurse/... · · 2006-10-29iniţiere în utilizarea unui limbaj de programare ... C Manual Complet, Bucuresti, Ed. Teora, 1998](https://reader034.vdocuments.net/reader034/viewer/2022042515/5aa860507f8b9a72188b8753/html5/thumbnails/22.jpg)
Dorel Lucanu Algoritmica si programare
repeat - exemple
7k - inlocuirea lui while cu repeat k ← 0sapte_la_k ← 1repeat
k ← k+1sapte_la_k ← sapte_la_k * 7
until (sapte_la_k ≥ n)
pentru n = 0 nu mai obtinem rezultatul corect
![Page 23: Algoritmi si programare (AP)dlucanu/cursuri/ap/resurse/... · · 2006-10-29iniţiere în utilizarea unui limbaj de programare ... C Manual Complet, Bucuresti, Ed. Teora, 1998](https://reader034.vdocuments.net/reader034/viewer/2022042515/5aa860507f8b9a72188b8753/html5/thumbnails/23.jpg)
Dorel Lucanu Algoritmica si programare
for – versiunea 1
sintaxafor ⟨variabila⟩ ← ⟨expresie1⟩ to ⟨expresie2⟩ do
⟨secventa_instructiuni⟩semantica
for i ← e1 to e2 doi1...ik
i ← e1while (i <= e2) doi1...iki ← succ(i)
![Page 24: Algoritmi si programare (AP)dlucanu/cursuri/ap/resurse/... · · 2006-10-29iniţiere în utilizarea unui limbaj de programare ... C Manual Complet, Bucuresti, Ed. Teora, 1998](https://reader034.vdocuments.net/reader034/viewer/2022042515/5aa860507f8b9a72188b8753/html5/thumbnails/24.jpg)
Dorel Lucanu Algoritmica si programare
for - exemple
Exemplu: s = 1 + 2 + ... + ns ← 0for i ← 1 to n do
s ← s + i Exemplu: a = 2k
a ← 1for i ← 1 to k do
a ← a * 2
![Page 25: Algoritmi si programare (AP)dlucanu/cursuri/ap/resurse/... · · 2006-10-29iniţiere în utilizarea unui limbaj de programare ... C Manual Complet, Bucuresti, Ed. Teora, 1998](https://reader034.vdocuments.net/reader034/viewer/2022042515/5aa860507f8b9a72188b8753/html5/thumbnails/25.jpg)
Dorel Lucanu Algoritmica si programare
for – versiunea 2
for ⟨variabila⟩ ← ⟨expresie1⟩ downto ⟨expresie2⟩ do⟨secventa_instructiuni⟩
semantica
for i ← e1 downto e2 doi1...ik
i ← e1while (i >= e2) do
i1...iki ← pred(i)
![Page 26: Algoritmi si programare (AP)dlucanu/cursuri/ap/resurse/... · · 2006-10-29iniţiere în utilizarea unui limbaj de programare ... C Manual Complet, Bucuresti, Ed. Teora, 1998](https://reader034.vdocuments.net/reader034/viewer/2022042515/5aa860507f8b9a72188b8753/html5/thumbnails/26.jpg)
Dorel Lucanu Algoritmica si programare
for - exemple
Exemplu: s = n + n-1 + ... + 1s ← 0for i ← n downto 1 do
s ← s + i
![Page 27: Algoritmi si programare (AP)dlucanu/cursuri/ap/resurse/... · · 2006-10-29iniţiere în utilizarea unui limbaj de programare ... C Manual Complet, Bucuresti, Ed. Teora, 1998](https://reader034.vdocuments.net/reader034/viewer/2022042515/5aa860507f8b9a72188b8753/html5/thumbnails/27.jpg)
Dorel Lucanu Algoritmica si programare
Subprograme - proceduri
sintaxaprocedure ⟨nume⟩(⟨parametri⟩)
⟨secventa_instructiuni⟩end
clasificarea parametrilor:de intrarede iesirede intrare/iesire
![Page 28: Algoritmi si programare (AP)dlucanu/cursuri/ap/resurse/... · · 2006-10-29iniţiere în utilizarea unui limbaj de programare ... C Manual Complet, Bucuresti, Ed. Teora, 1998](https://reader034.vdocuments.net/reader034/viewer/2022042515/5aa860507f8b9a72188b8753/html5/thumbnails/28.jpg)
Dorel Lucanu Algoritmica si programare
Subprograme - exemple
interschimbarea valorilor a doua variabileprocedure swap (a, b)temp ← aa ← bb ← temp
endutilizarex ← 7y ← 23swap(x,y)// x = 23, y =7
![Page 29: Algoritmi si programare (AP)dlucanu/cursuri/ap/resurse/... · · 2006-10-29iniţiere în utilizarea unui limbaj de programare ... C Manual Complet, Bucuresti, Ed. Teora, 1998](https://reader034.vdocuments.net/reader034/viewer/2022042515/5aa860507f8b9a72188b8753/html5/thumbnails/29.jpg)
Dorel Lucanu Algoritmica si programare
Subprograme - functii
sintaxafunction ⟨nume⟩(⟨parametri⟩)
⟨secventa_instructiuni⟩return ⟨expresie⟩
endpot exista mai multe instructiuni return
![Page 30: Algoritmi si programare (AP)dlucanu/cursuri/ap/resurse/... · · 2006-10-29iniţiere în utilizarea unui limbaj de programare ... C Manual Complet, Bucuresti, Ed. Teora, 1998](https://reader034.vdocuments.net/reader034/viewer/2022042515/5aa860507f8b9a72188b8753/html5/thumbnails/30.jpg)
Dorel Lucanu Algoritmica si programare
Subprograme - exemple
functia care intoarce sumafunction suma(n)
s ← 0for i ← 1 to n do
s ← s + ireturn s
endutilizarev ← suma(m) – m/2
![Page 31: Algoritmi si programare (AP)dlucanu/cursuri/ap/resurse/... · · 2006-10-29iniţiere în utilizarea unui limbaj de programare ... C Manual Complet, Bucuresti, Ed. Teora, 1998](https://reader034.vdocuments.net/reader034/viewer/2022042515/5aa860507f8b9a72188b8753/html5/thumbnails/31.jpg)
Dorel Lucanu Algoritmica si programare
Exceptii
sintaxathrow ⟨mesaj⟩if ⟨expresie⟩ then throw ⟨mesaj⟩
exempluif (b = 0) then throw “impartire prin 0”x ← a/b
![Page 32: Algoritmi si programare (AP)dlucanu/cursuri/ap/resurse/... · · 2006-10-29iniţiere în utilizarea unui limbaj de programare ... C Manual Complet, Bucuresti, Ed. Teora, 1998](https://reader034.vdocuments.net/reader034/viewer/2022042515/5aa860507f8b9a72188b8753/html5/thumbnails/32.jpg)
Dorel Lucanu Algoritmica si programare
Calculul unui program
x ← 1i ← 2while (i < 4) do
x ← X*ii ← i+1
fiecare instructiune= o unitate de timptimpul de executieT = 9
32i < 46
21i < 43
46i < 49
36i ← i+18
32x ← x*i7
22i ← i+15
21x ← x*i4
-1i ← 22
--x ← 11
ixInstruct./exppas
![Page 33: Algoritmi si programare (AP)dlucanu/cursuri/ap/resurse/... · · 2006-10-29iniţiere în utilizarea unui limbaj de programare ... C Manual Complet, Bucuresti, Ed. Teora, 1998](https://reader034.vdocuments.net/reader034/viewer/2022042515/5aa860507f8b9a72188b8753/html5/thumbnails/33.jpg)
Dorel Lucanu Algoritmica si programare
Calculul unui program
linie in tabel = configuratie (c)obtinerea unei linii din precedenta = relatie de tranzitie: ci-1 → ci
calculfinit: c0 → c1 → c2 →… → cn
infinit: c0 → c1 → c2 →…problema
(intrare, iesire)un caz particular de intrare se numeste instanta
calcul generat de instantao instanta det. c0 si c0 det. unic un calcul
problema rezolvata de un programcalculul generat de c0 este finitconfiguratia finala cn contine iesirea
![Page 34: Algoritmi si programare (AP)dlucanu/cursuri/ap/resurse/... · · 2006-10-29iniţiere în utilizarea unui limbaj de programare ... C Manual Complet, Bucuresti, Ed. Teora, 1998](https://reader034.vdocuments.net/reader034/viewer/2022042515/5aa860507f8b9a72188b8753/html5/thumbnails/34.jpg)
Dorel Lucanu Algoritmica si programare
Tablouri
a int[3]
a[0] int
a[1] int
a[2] int
a[1] ← 7a[2] ← a[1] * 2
int a[3]
7 14
![Page 35: Algoritmi si programare (AP)dlucanu/cursuri/ap/resurse/... · · 2006-10-29iniţiere în utilizarea unui limbaj de programare ... C Manual Complet, Bucuresti, Ed. Teora, 1998](https://reader034.vdocuments.net/reader034/viewer/2022042515/5aa860507f8b9a72188b8753/html5/thumbnails/35.jpg)
Dorel Lucanu Algoritmica si programare
Tablouri - exemple
suma primelor n elemente dintr-un tablous ← 0for i ← 0 to n-1 do
s ← s + a[i]cautarea unui element x intr-un tablou
i ← 0while (i < n-1 and a[i] != x) do
i ← i + 1if (a[i] = x)then poz ← ielse poz ← -1
![Page 36: Algoritmi si programare (AP)dlucanu/cursuri/ap/resurse/... · · 2006-10-29iniţiere în utilizarea unui limbaj de programare ... C Manual Complet, Bucuresti, Ed. Teora, 1998](https://reader034.vdocuments.net/reader034/viewer/2022042515/5aa860507f8b9a72188b8753/html5/thumbnails/36.jpg)
Dorel Lucanu Algoritmica si programare
Structuri statice (articole)
d data
d.zi 1..31
d.ln 1..12
d.an int
data calendaristica: zi, luna, an
d.ln ← 11d.zi ← 6d.an ← 2004
116 2004
![Page 37: Algoritmi si programare (AP)dlucanu/cursuri/ap/resurse/... · · 2006-10-29iniţiere în utilizarea unui limbaj de programare ... C Manual Complet, Bucuresti, Ed. Teora, 1998](https://reader034.vdocuments.net/reader034/viewer/2022042515/5aa860507f8b9a72188b8753/html5/thumbnails/37.jpg)
Dorel Lucanu Algoritmica si programare
Structuri si pointeri
*pd data
p->zi 1..31
p->ln 1..12
p->an int
pd data*
![Page 38: Algoritmi si programare (AP)dlucanu/cursuri/ap/resurse/... · · 2006-10-29iniţiere în utilizarea unui limbaj de programare ... C Manual Complet, Bucuresti, Ed. Teora, 1998](https://reader034.vdocuments.net/reader034/viewer/2022042515/5aa860507f8b9a72188b8753/html5/thumbnails/38.jpg)
Dorel Lucanu Algoritmica si programare
Liste simplu inlantuite
un nod v este o structura cu doua campuri:v.inf - memoreaza informatia din nodv.succ – adresa nodului urmatoro lista este identificata de 2 pointeri: prim siultimla un moment dat se proceseaza nodul curentoperatii: inserare/eliminare noduri, parcurgere
e0 ei en-1…
prim
curent
ultim
…
![Page 39: Algoritmi si programare (AP)dlucanu/cursuri/ap/resurse/... · · 2006-10-29iniţiere în utilizarea unui limbaj de programare ... C Manual Complet, Bucuresti, Ed. Teora, 1998](https://reader034.vdocuments.net/reader034/viewer/2022042515/5aa860507f8b9a72188b8753/html5/thumbnails/39.jpg)
Dorel Lucanu Algoritmica si programare
Timpul de executie in cazul cel mai nefavorabil
i ← 0while (i < n-1 and a[i] != x) do
i ← i + 1if (a[i] = x)then poz ← ielse poz ← -1a = (4, 1, 5, 9, 6)daca x = 4, atunci T = 1 + 1 + 2 = 4 (cel maifavorabil)daca x = 6 sau x = 3, atunciT = 1 + 4*2 + 2 = 11 (cel mai nefavorabil)in general: T(n) = 1 + 2*(n-1) + 2 = 2*n+1 n – dimensiunea instantei problemei
![Page 40: Algoritmi si programare (AP)dlucanu/cursuri/ap/resurse/... · · 2006-10-29iniţiere în utilizarea unui limbaj de programare ... C Manual Complet, Bucuresti, Ed. Teora, 1998](https://reader034.vdocuments.net/reader034/viewer/2022042515/5aa860507f8b9a72188b8753/html5/thumbnails/40.jpg)
Dorel Lucanu Algoritmica si programare
Notatia O(f(n))
functii f(n) de argument numar natural si valorinumere reale pozitiveO(f(n)) = clasa functiilor marginite superior de f(n)
g(n) ∈ O(f(n)) daca exista c > 0, n0 a.i.g(n) <= c*f(n) pentru orice n >= n0
functiile constante ∈ O(1)polinoamele de grad 1 ∈ O(n) polinoamele de grad 2 ∈ O(n2)functii logaritmice ∈ O(log n)
Pentru cautarea in tablou: T(n) = O(n)notatie: T(n) = O(n) in loc de T(n) ∈ O(n)