Documente Academic
Documente Profesional
Documente Cultură
calculatoarelor
Eficienta algoritmilor
Curs 5
D. Cosma
Cuprins
1.
1.Cautarea
Cautareaminimului
minimuluiintr-un
intr-unsir.
sir.
2.
2.Ordonarea
Ordonareacrescatoare
crescatoareaaunui
unuisir
sir
3.
3.Concatenarea
Concatenareaaa22siruri
siruriordonate
ordonate
4.
4.Strategia
Strategiadivide
divideand
andconquer
conquer
5.
5.Sortarea
Sortareasirurilor.
sirurilor.Buble-sort.
Buble-sort.
3
Procedura instinctiv de
cutare
8 2 4 9 3 6
Pas 2: Compar minimul cu urmtorul numr i alege cel mai
mic dintre ele (Min = 2)
8 2 4 9 3 6
Pas 3: Compar minimul cu urmtorul numr i alege cel mai
mic dintre ele (Min = 2)
8
8 2 4 9 3 6
Pas 6: Compar minimul cu urmtorul numr i alege cel mai
mic dintre ele (Min = 2)
2
Soluie problem 1
Cel mai mic numr este 2.
Am parcurs un algoritm de cutare ntr-o
singur secven avnd ase pai!
8 2 4 9 3 6
6
7
Cum le ordonm?
10
8 2 4 9 3 6
8 2 4 9 3 6
8 2 4 9 3 6
8 2 4 9 3 6
Pas 3: Compar minimul cu urmtorul numr i alege cel mai
mic dintre ele (Min = 2)
8 2 4 9 3 6
8
11
6
12
Rezultat secvena 1
4 9 3 6
13
14
4 9 3 6
Rezultat secvena 2
4 9 3 6
6
16
4 9
4 9
6
17
Rezultat secvena 3
18
6
19
20
Rezultat secvena 4
9
21
Rezultat secvena 5
22
Rezultat secvena 6
9
23
9
24
N = n
1
100000
80000
60000
40000
20000
0
0
100
200
300
400
Orice algoritm care rezolv aceast problem din mai puini pai
25
13 20
11 12
26
27
13
20
11
12
1
Pas 2: Eliminm cel trecut n irul concatenat
2
13
20
11
12
29
30
13
20
13
20
11
12
11
12
13
20
11
12
9
31
13
20
11
12
32
13
20
13
20
11
12
11
12
20
11
12
9 11
20
12
33
34
20
13
20
12
9 11 12
9 11 12 13
20
20
35
36
9 11 12 13 20
37
38
La un ir de 4.000 de numere.
Prima metod are nevoie de 8.002.000
(adic opt milioane) de pai s ordoneze
un ir.
40
4000
Ordonare 8x125.250=1.002.000
500
500
1000
500
500
1000
500
1000
2000
1000
2000
4000
500
500
500
4x1.000=4.000 pai
2x2.000=4.000 pai
1x4.000=4.000 pai
41
42
Cum ordonm?
43
S parcurgem numerele.
Comparm cte dou numere consecutive.
Dac ele sunt n ordinea dorit (primul este
mai mic) nu facem cu ele nimic.
Dac nu sunt n ordinea dorit (primul este mai
mare) schimbm ordinea lor.
Repetm parcurgerea de la nceput de attea
ori pn toate numerele ajung n ordine
cresctoare.
44
Rezult
Rezult
2
45
46
Rezult
47
6
48
Rezultat secvena 1
Rezult
9
49
50
Rezult
51
52
Rezultat secvena 2
Rezult
8
9
53
54
Rezult
55
56
Rezultat secvena 3
8 9
9
57
58
9
59
60
N min = n 1
3000
Min(Deja sortate)
Max(Sortate invers)
2500
2000
N max = n (n 1)
1500
1000
500
0
0
10
20
30
40
61
50
62
Concluzie
Este esenial ca la dezvoltarea unui
program de calcul (mai ales la unu
intensiv din punct de vedere matematic)
s studiem eficiena algoritmului
utilizat!!!
63
http://cemsig.ceft.utt.ro/cursuri/
64