Sunteți pe pagina 1din 2

Se dă un șir cu n elemente, numere întregi.

Folosind metoda MergeSort, ordonați crescător


elementele acestui șir.\

#include <iostream>
using namespace std;
int c[100000];
void MergeSort(int v[], int st, int dr)
{
if(st < dr)
{
int m = (st + dr) / 2;
MergeSort(v, st , m);
MergeSort(v, m + 1 , dr);
int i = st, j = m + 1, k = 0;
while( i <= m && j <= dr )
if( v[i] < v[j])
c[k++] = v[i++];
else
c[k++] = v[j++];
while(i <= m)
c[k++] = v[i++];
while(j <= dr)
c[k++] = v[j++];
for(i = st , j = 0 ; i <= dr ; i ++ , j ++)
v[i] = c[j];
}
}
int v[100000];int n;
int main(){
cin>>n;
for(int i=0;i<n;i++)
cin>>v[i];
MergeSort(v,0,n-1);
for(int i=0;i<n;i++)
cout<<v[i]<<" ";
}
Se consideră un șir cu n elemente, numere naturale. Folosind metoda Divide et Impera, determi
nați suma elementelor acestui șir.
# include <iostream>

using namespace std;

int suma( int v[], int b, int e ) {


if ( e - b == 0 )
return v[b];
else
return suma( v, b, ( b + e ) / 2 ) + suma( v, ( b + e ) / 2 + 1, e );
}

int main() {
int n, i;

cin >> n;
int v[n];

for ( i = 0; i < n; i ++ )
cin >> v[i];

cout << suma( v, 0, n - 1 );

return 0;

Se dă un şir cu n elemente, numere naturale. Folosind metoda Divide et Impera să se verifice da


că în şir există elemente impare.

S-ar putea să vă placă și