Minimul si maximul
Vizualizari 73
Postat marți, 12 august 2025
In acest articol, vom discuta algoritmi de de determinare a valorilor minime si maxime dintr-un sir.
Sunt multe situatii in care am avea nevoie de acesti algoritmi. Sunt usoare de inteles si utile. Iata cele doua categorii principale de algoritmi min/max:
Min/Max cu nr. de elemente cunoscuteMin/Max cu nr. de elemente necunoscute
Numar de elemente cunoscute
Exemplu
Sa incepem cu un exemplu din viata reala: Notele unei clase cu 15 elevi care au participat la un test. Profesorul are o lista cu notele care arata asa:4, 6, 7, 7, 5, 8, 9, 8, 4, 5, 6, 7, 9, 9, 8
Iar acesta vrea sa afle nota cea mai mica si cea mai mare.
Stiind numarul de elevi din clasa - 15 - putem utiliza structura for pentru a citi de la tastatura (sau dintr-un fisier) lista cu note de la profesor. Deasemenea, stiim ca cea mai mica nota posibila este 0 si cea mai mare este 10.
// Compilator C++ online | intelegeinfo.ro #includeDeschide in editorusing namespace std; int main() { int elevi = 15, i, nota, min=10, max=0; for(i=1;i <= elevi;i++) { cin >> nota; if(nota > max) max = nota; if(nota < min) min = nota; } cout << min <<" " << max; }
Explicatie Cod
- elevi - numarul de elevi
- i- indexul buclei for/li>
- min - minimul notelor, initializam la cea mai mare valoare posibila, in cazul nostru 10
- max -maximul notelor, initializam la cea mai mica valoare posibila, in cazul nostru 0.
- Daca nota elevului este mai mare decat nota maxima, atunci nota maxima ia valoarea notei elevului.
- Daca nota elevului este mai mica decat nota minima, atunci nota minima ia valoarea notei elevului.
Complexitate algoritm: O(n)
Numar de elemente necunoscute
Exemplu
Luam ca exemplu preturile produselor vandute intr-un magazin:
-
Intr-o zi, s-au vandut 10 mere, 6 sticle de apa, 3 inghetate, si 5 paini.
In alta zi, s-au vandut 2 mere, 5 sticle de apa, si 9 paini.
Putem observa ca numarul de produse diferite variaza in functie de zi, adica nu-i putem da o valoare constanta. (cum ar fi nrProduse = 6), deci trebuie sa gasim alta solutie. Una dintre ele
// Compilator C++ online | intelegeinfo.ro #includeDeschide in editorusing namespace std; int main() { int nrProduse, max=0, min; cin >> nrProduse; min = nrProduse; while(nrProduse != 0) { if(nrProduse > max) max = nrProduse; if(nrProduse < min) min = nrProduse; cin >> nrProduse; } cout << min << " " << max << endl; return 0; }
Explicatie Cod
Ce trebuie sa retii este ca mereu initializam:- max/min cu cea mai mica/mare valoare posibila:
- Cea mai mica/mare valoare a datelor de intrare a problemei
- Cea mai mica/mare valoare a tipului de date, in caz ca problema nu specifica restrictionariile
- Prima valoare citita de program
Initializam max si min cu prima valoare citita de progream, fiindca, daca spre exemplu, citim 6 0
, 6 v-a fi cea mai mica valoare, dar si cea mai mare, astfel min si max sunt si initializate si le putem compara. ✔️
Comparam max si min cu numarul de produse, care vor lua valorile numarului de produse daca nrProduse>max, respectiv nrProduse
Cand se citeste 0, se stie ca s-a terminat sirul de produse, si se afiseaza minimul si maximul!
Complexitate timp algoritm: O(n)