1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
| void fusion(int tab[], int deb, int mid, int end)
{
int i= deb;
int j = mid + 1;
int size = end-deb+1;
int *tab2= new int[size];
int k = deb;
for (int p=0;p<size;p++)
{
tab2[p]=tab[p];
}
while (i<=mid && j <=end )
{
if(tab2[i]>tab2[j])
{
tab[k]=tab2[j];
j++;
}
else
{
tab[k]=tab2[i];
i++;
}
k++;
}
while(i<mid)
{
tab[k]=tab2[i];
i++;
k++;
}
while(j<end)
{
tab[k]=tab2[j];
j++;
k++;
}
}
void merge_sort(int tab[], int deb, int end)
{
if(deb < end)
{
int mid=deb+(end-deb)/2;
merge_sort (tab,deb,mid);
merge_sort(tab,mid+1,end);
fusion(tab,deb,mid,end);
}
} |
Partager