Intelegeinfo

  • ro
  • us
  • 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 cunoscute
    Min/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
    
    #include 
    
    using 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;
        
    }
    Deschide in editor

    Explicatie Cod

    Vrem sa verificam notele fiecarui elev, asa ca incepem bucla for de la indicele 1, pana la 15 - numarul eleviilor. Citim nota elevului de la tastatura, apoi facem verificariile: Dupa ce am verificat toate notele, afisam nota minima si cea maxima.

    Complexitate algoritm: O(n)

    Numar de elemente necunoscute

    Exemplu

    Luam ca exemplu preturile produselor vandute intr-un magazin:

    Managerul magazinului vrea sa stie care a fost cel mai mare numar de produse vandute si care a fost cel mai mic numar.

    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 (Tema: Gaseste inca o solutie) ar fi sa citim numarul de produse pana cand se introduce 0.

    //    Compilator C++ online | intelegeinfo.ro
    
    #include 
    
    using 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;
    }
    Deschide in editor

    Explicatie Cod

    Ce trebuie sa retii este ca mereu initializam:

    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)

    Challange:

    Rezolva aceasta problema sa-ti asimilezi cunostiintele si sa exersezi!