Pagini recente » Cod sursa (job #2058142) | Cod sursa (job #772843) | Cod sursa (job #368549) | Cod sursa (job #2695976) | Cod sursa (job #2622445)
#include <iostream>
using namespace std;
void interclasare(int v[],int st,int dr)
{
int i,j,k,mij=(st+dr)/2,l1=mij-st+1,l2=dr-mij;
int arr1[l1],arr2[l2];
for(i=0;i<l1;i++)
arr1[i]=v[st+i];
for(j=0;j<l2;j++)
arr2[j]=v[mij+j+1];
i=0;j=0;k=st;
while(i<l1 && j<l2)
if (arr1[i]>arr2[j])
v[k++]=arr2[j++];
else
v[k++]=arr1[i++];
while(i<l1)
v[k++]=arr1[i++];
while(j<l2)
v[k++]=arr2[j++];
}
void merge_sort(int v[],int st,int dr)
{
if (st<dr)
{
merge_sort(v,st,(st+dr)/2);
merge_sort(v,(st+dr)/2+1,dr);
interclasare(v,st,dr);
}
}
void mrg(int v[],int nr)
{
merge_sort(v,0,nr-1);
}
int main()
{
int v[]={0,3,3,4,5,12,-12};
mrg(v,7);
for(int i=0;i<7;i++)
cout<<v[i]<<' ';
return 0;
}