Documente Academic
Documente Profesional
Documente Cultură
L. A. Fulop
Algoritmi I.
Curs 2
Proceduri de proiectare
Limbaj natural Pseudocod Scheme logice
Examplul 1 ntrebare
ntrebare n cldire sunt 20 de trepte ntre fiecare etaj, fiecare de 33 cm. Ct Nutella trebuie s mnnce un om de 70 kg s recupereze energia consumat pentr a ajunge la secretariat? (Nutella are 2147 joules / 100 gr)
m=70 kg h=0.33 m g=9.81 m/s2 ENut=2147kJ/g Etreapta=70 x 9.81 x 0.33 =226.6 J Eetaj=1 x 20 x 226.6 = 4532.2 J EgNut=100/2147000 g E=4532.22 x 100/2147000 = 0.211 g
E=0.211 g STOP
A B Execut A; Execut B; Do A; Do B;
Dac i=1 execut A; dac i=2 execut B; ... Do A if i=1; Do B if i=2; ...
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
Pas 3: Compar minimul cu urmtorul numr i alege cel mai mic dintre ele (Min = 2)
8 2 4 9 3 6
8 2 4 9 3 6
Pas 5: Compar minimul cu urmtorul numr i alege cel mai mic dintre ele (Min = 2)
8 2 4 9 3 6
Pas 6: Compar minimul cu urmtorul numr i alege cel mai mic dintre ele (Min = 2)
8 2 4 9 3 6
Cate numere in sir: NR Cate numere in sir: NR Cititi sirul de numere: V[] Cititi sirul de numere: V[] Minimul este: min = V[0]
Incepand cu primul numar din sir V[] i=0 Mai avem numere in V[]? De la i=0 pana i<NR.
Da(True) Nu(False)
min>V[i]
Nu(False) Da(True)
Am gasit minimul dintre numere: Am gasit minimul dintre numere: min min
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
Cum le ordonm?
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
Pas 3: Compar minimul cu urmtorul numr i alege cel mai mic dintre ele (Min = 2)
8 2 4 9 3 6
8 2 4 9 3 6
Pas 5: Compar minimul cu urmtorul numr i alege cel mai mic dintre ele (Min = 2)
8 2 4 9 3 6
Pas 6: Compar minimul cu urmtorul numr i alege cel mai mic dintre ele (Min = 2)
8 2 4 9 3 6
Rezultat secvena 1
Secvena 1 s-a terminat n 6 pai. Cel mai mic numr din ir este 2.
irul rmne cu 5 numere dintre care vom cuta cel mai mic! 8 4 9 3 6
4 9 3 6
Pas 2: Compar minimul cu urmtorul numr i alege cel mai mic dintre ele (Min = 4)
4 9 3
Pas 3: Compar minimul cu urmtorul numr i alege cel mai mic dintre ele (Min = 4)
4 9 3 6
4 9 3 6
Pas 5: Compar minimul cu urmtorul numr i alege cel mai mic dintre ele (Min = 3)
4 9 3 6
Rezultat secvena 2
Secvena 2 s-a terminat n 5 pai. Cel mai mic numr din ir este 3.
irul rmne cu 4 numere dintre care vom cuta cel mai mic! 8 4 9 6
4 9
Pas 2: Compar minimul cu urmtorul numr i alege cel mai mic dintre ele (Min = 4)
4 9
Pas 3: Compar minimul cu urmtorul numr i alege cel mai mic dintre ele (Min = 4)
4 9
4 9
Rezultat secvena 3
Secvena 3 s-a terminat n 4 pai. Cel mai mic numr din ir este 4.
irul rmne cu 3 numere dintre care vom cuta cel mai mic! 8 9 6
Pas 2: Compar minimul cu urmtorul numr i alege cel mai mic dintre ele (Min = 8)
Pas 3: Compar minimul cu urmtorul numr i alege cel mai mic dintre ele (Min = 6)
Rezultat secvena 4
Secvena 4 s-a terminat n 3 pai. Cel mai mic numr din ir este 6.
irul rmne cu 2 numere dintre care vom cuta cel mai mic! 8 9
Pas 2: Compar minimul cu urmtorul numr i alege cel mai mic dintre ele (Min = 8)
Rezultat secvena 5
Secvena 5 s-a terminat n 2 pai. Cel mai mic numr din ir este 8.
Rezultat secvena 6
Secvena 6 s-a terminat ntr-un pas. Cel mai mic numr din ir este 9. 9 2 3 4 6 8 9
Cate numere in sir: NR Cate numere in sir: NR Cititi sirul de numere: V[] Cititi sirul de numere: V[] Incepand cu primul numar din sirul sortat V1[] Incepand cu primul numar din sirul sortat V1[] j=0 j=0 Mai avem de completat in sirul sortat V1[]? De la j=0 pana j<NR
Da (True) Da (True)
Nu(False) Nu(False)
min>V[i]
Nu(False) Nu(False) Da(True)
Minimul gasit il punem pe pozitia j al lui V1[]: V1[j]=min Eliminam din V[] numarul gasit: V[Pm]=max(V[])
Nu (False) Nu (False)
Sirul V1[] este ordonat crescator. Sirul V1[] este ordonat crescator.
N = n
1
Orice algoritm care rezolv aceast problem din mai puini pai este un algoritm mai eficient !!!