Informatică, întrebare adresată de mariamagdalena2269, 8 ani în urmă




Un arhitect a fost angajat så restaureze toate clădirile vechi ale oraşului. Acestuia i-a fost înmânat un document cu toate clădirile
ce necesita restaurare, respectiv o listă cu inaltimea fiecărei clădiri. Deoarece curând are loc un eveniment important în oraş,
arhitectului i s-a cerut să restaureze cât mai multe clădiri până la data evenimentului.
Pentru a se asigura că reuseste så restaureze cât mai multe clădiri într-un timp cât mai scurt, acesta dorește să înceapă cu cele
mai scunde clădiri. Te-ai oferit så il ajuti, scriind un program care så sorteze crescător înalţimile clădirilor
Date de intrare
Se citeşte de la tastatură un numar natural n, reprezentând numărul total de clădiri ce trebuiesc restaurate, respectiv un șir den
numere naturale, reprezentand inaltimile clădirilor - in milimetri.
Date de ieşire
Programul va afişa pe ecran inaltimile cladirilor, sortate crescător, separate prin spații.
Restricţii şi precizări
• 1 <= n<=1000
• inaltimile clădirilor sunt numere intregi care aparţin intervalului [ -2 000 000 000, 2 000 000 000]
Exemplu
Date de intrare 7
41780 939063 571901 9571 553691 751366 367571
Date de ieşire
9571 41730 367571 553691 571901 751366 939963

Răspunsuri la întrebare

Răspuns de andrei750238
5

#include <iostream>

using namespace std;

void sortare_rapida(int v[], int stg, int dr) {

   int i = stg, j = dr;

   int mij = v[(stg + dr) / 2];

   while (i <= j) {

       while (v[i] < mij)

           i++;

       while (v[j] > mij)

           j--;

       if (i <= j) {

           swap(v[i], v[j]);

           i++;

           j--;

       }

   };

   if (stg < j)

       sortare_rapida(v, stg, j);

   if (i < dr)

       sortare_rapida(v, i, dr);

}

int main()

{

int n, index;

 

cin >> n;

   int* v = new int[n];

for (index = 0; index < n; index++)

 cin >> v[index];

   sortare_rapida(v, 0, n - 1);

for (index = 0; index < n; index++)

       cout << v[index] << " ";

}

Anexe:
Alte întrebări interesante