# PBinfo #1846 – OrdonareSecvF_REC – Rezolvare C++

Sursa: Codul lui Andrei
Limbaj: C++
Autor rezolvare: deivid

## Enunț

Cerinţa
Scrieţi definiția completă a subprogramului C++ recursiv ordonare care are 4 parametri:  a, prin care primeşte un tablou unidimensional  cu maximum 1000 de numere naturale mai mici decât 1.000.000.000 și n, numărul efectiv de elemente ale tabloului și doi indici st dr.

Subprogramul ordonează crescător elementele tabloului a cu indici între st și dr, inclusiv aceștia,fără a modifica celelalte elemente ale tabloului.

Restricţii şi precizări

0 < n <= 1000
numele subprogramului cerut este ordonare
parametrii sunt, în această ordine: a, n, st, dr
0≤st≤dr<n
elementele tabloului a sunt indexate de la zero
se recomandă realizarea unei soluții recursive

Exemplu:
Dacă n=6, a=(63,273,9,83,93,123), st=1 și dr=3  după apelul subprogramului tabloul a devine (63,9,83,273,93,123).

Important
Soluţia propusă va conţine doar definiţia subprogramului cerut. Prezenţa în soluţie a altor instrucţiuni poate duce erori de compilare sau de execuţie care vor avea ca efect depunctarea soluţiei.

## Cod sursă C++

```cpp
void ordonare(int  a[] , int n , int st , int dr)
{
	if(n>st)
    {
    	if(n - 1<= dr)
        {
        	int pmax = n - 1;
          	for(int i = st ; i < n - 1 ; i ++)
              	if(a[i] > a[pmax])
              		pmax = i;
            int aux = a[pmax];
          	a[pmax] = a[n - 1];
          	a[n - 1] = aux;
        }
      	ordonare(a,n-1,st,dr);
    }
}
```

## Resurse

- [Pagina originală](https://codulluiandrei.ro/rezolvari/pbinfo/1846)
- [Sursa C++](https://codulluiandrei.ro/rezolvari/pbinfo/1846/cod.cpp)
- [Sursa pe GitHub](https://raw.githubusercontent.com/codulluiandrei/pbinfo/main/pbinfo-1846/main.cpp)
- [Cursuri de informatică pentru BAC](https://codulluiandrei.ro/academia/info-curs/pachet-cpp/)
