Introducere in Stiinta Calculatoarelor 2013 | Page 88
6.2.3. Exemple de algoritmi
În continuare, se prezintă câteva exemple de algoritmi, cu descrierea lor
folosind instrucţiunile prezentate pentru controlul fluxului de operaţiuni
iar pentru comunicaţia cu omul (adică pentru afişare) se folosesc
exprimări în cuvinte încadrate de { şi } (acolade). Acest paragraf are ca
scop exemplificarea unor algoritmi concreţi dintre cei mai utilizaţi în
prelucrări uzuale, pentru fiecare exemplu prelucrările fiind grupate întrun subprogram cu nume sugestiv ce poate apelat în alte programe.
Ambele exemple sunt aplicaţii ale metodei „Divide et impera”.
Căutare (logaritmică) binară
Cea mai uzuală prelucrare efectuată cu un sistem de calcul este căutarea
unei piese de date într-o mulţime oarecare – de exemplu date aflate pe
unul din discurile calculatorului sau date aflate în Internet. După cum
s-a arătat, cea mai eficientă căutare are loc atunci când datele sunt
organizate arborescent. O metodă de căutare eficientă – similară celei
în arbore, se poate însă executa şi pe date ordonate secvenţial (după un
criteriu de ordine – alfabetic, numeric), adică date ordonate într-o listă.
Fie exemplul următor: se dă o listă (un tabel) cu date despre studenţi
(număr legitimaţie, nume, prenume, adresă, etc.) ordonate crescător
după numărul de legitimaţie; se doresc informaţii despre un student cu
număr de legitimaţie cunoscut (denumit Tinta). Trebuie remarcat că
înşiruirea de numere de legitimaţie în listă nu este continuă – unii
studenţi au rămas repetenţi, alţii s-au retras, deci secvenţa de numere
are „goluri”.
Metoda de lucru constă în compararea numărului Tinta cu numărul de
la jumătatea listei (element pivot), apoi selectează pentru căutare în
continuare jumătatea superioară sau inferioară – funcţie de rezultatul
comparaţiei. Căutarea se repetă prin înjumătăţire succesivă până la
găsirea liniei numărului Tinta (şi afişarea informaţiilor) sau se constată
inexistenţa lui în listă.
Pentru descrierea algoritmului se consideră Lista (ca depozitar al
informaţiilor despre studenţi) apoi Tinta (ca variabilă ce conţine
numărul de legitimaţie căutat) şi elementul Pivot (valoare aflată la
88