Găsiți cele două elemente maxime ale unei matrice

În mulțimea de numere, găsiți două elemente maxime.

Această sarcină necesită clarificări și concretizări:

  • dacă aceste elemente ar trebui să fie egale între ele;
  • sau pot fi diferite, dar mai mari decât toate celelalte elemente. De exemplu, în matrice [4, 7, 2, 6, 9] două elemente maximale sunt numerele 9 și 7.

În acest caz, vom presupune că trebuie să găsim cele două elemente mai mari dintr-o matrice unidimensională. În același timp, ele pot fi egale sau diferite.







Problema poate fi rezolvată în două moduri. Cel mai ușor de înțeles este utilizarea a două matrice de matrice. În primul, se caută primul maxim. În al doilea - al doilea, în timp ce primul element maxim este exclus cu operatorul condițional dacă. Cod de probă al programului:

Aici variabilele max1 și max2 nu stochează valorile elementelor, dar indicii lor (acest lucru este suficient, deoarece indexul poate obține întotdeauna valoarea).







Rețineți construcția dacă max1 = 1 apoi max2. = 2 altul max2. = 1 ;. Este necesar din următorul motiv. Nu știm care valoare inițială ar trebui atribuită variabilei max2. La urma urmei, dacă primul element cel mai mare este primul și atribuim max2 la 1, nu vom găsi niciodată al doilea cel mai mare.

În bucla care definește al doilea maxim, este verificată mai întâi dacă numărul elementului curent nu se potrivește cu cel deja inclus în max1. Doar după aceasta, valoarea elementului curent este comparată cu valoarea elementului cu indexul max2.

A doua variantă de rezolvare a problemei este atunci când ambele maxime sunt căutate într-un singur ciclu:

În primul rând, se presupune că primele două elemente ale matricei u sunt cele mai mari. Care dintre ele este primul maxim și care este al doilea maxim, se determină folosind construcția if-else în afara bucla. Căutarea în matrice începe cu al treilea element. Dacă elementul următor al matricei este mai mare decât primul maxim, indicele său este scris la prima variabilă. (În acest caz, este posibil ca păstrate anterior în indexul max1 a indicat un al doilea maxim. Dacă este așa, atunci acesta va fi înregistrată în MAX2. Pentru a face acest lucru, utilizați piele de bivol variabilă și imbricate dacă este.) În caz contrar, verificați MAX2 variabilă făcută.

Exemplu execuție cod:







Trimiteți-le prietenilor: