#include <stdio.h>
#define MAX 1024
void merge(int a[][2],int start,int middle ,int end)
{
int size1 = middle-start +1;
int size2 = end-middle;
int i,j;
int k =start;
int L[MAX][2];
int R[MAX][2];
// copy values from main array to temp arrays
for(i=0 ; i<size1; i++)
{
L[i][1] = a[i+start][1];
L[i][0] = a[i+start][0];
}
for(j=0 ; j<size2 ; j++)
{
R[j][1] = a[j+middle+1][1];
R[j][0] = a[j+middle+1][0];
}
i=0;
j=0;
while(i<size1 && j<size2)
{
if(L[i][1] < R[j][1])
{
a[k][1] = L[i][1];
a[k][0] = L[i][0];
k++;
i++;
}
else{
a[k][1] = R[j][1];
a[k][0] = R[j][0];
k++;
j++;
}
}
while(i<size1)
{
a[k][1] = L[i][1];
a[k][0] = L[i][0];
i++;
k++;
}
while(j<size2)
{
a[k][1] = R[j][1];
a[k][0] = R[j][0];
k++;
j++;
}
}
void mergeSort(int a[][2], int start , int end)
{
if(start < end)
{
int middle = start + (end - start) /2;
mergeSort(a,start, middle);
mergeSort(a,middle+1,end);
merge(a,start,middle,end);
}
}
int main()
{
int array[10][2] = {{0,55},{1,3},{2,4},{3,5},{4,6},{5,7},{6,8},{7,9},{8,10},{9,2}};
int i;
int len = sizeof(array)/sizeof(array[0]) - 1;
for(i = 0 ;i <= 9; i++)
mergeSort(array,0,9);
printf ( "\nArray after sorting:\n") ; printf ( "\nIndex after sorting:\n") ; for(i = 0 ;i <= 9; i++)
printf ( "\nArray after sorting:\n") ; for(i = 0 ;i <= 9; i++)
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNkZWZpbmUgTUFYIDEwMjQKdm9pZCBtZXJnZShpbnQgYVtdWzJdLGludCBzdGFydCxpbnQgbWlkZGxlICxpbnQgZW5kKQp7CmludCBzaXplMSA9IG1pZGRsZS1zdGFydCArMTsKaW50IHNpemUyID0gZW5kLW1pZGRsZTsKaW50IGksajsKaW50IGsgPXN0YXJ0OwoKCmludCBMW01BWF1bMl07CmludCBSW01BWF1bMl07CgoKLy8gY29weSB2YWx1ZXMgZnJvbSBtYWluIGFycmF5IHRvIHRlbXAgYXJyYXlzCmZvcihpPTAgOyBpPHNpemUxOyBpKyspCiAgewogICAgTFtpXVsxXSA9IGFbaStzdGFydF1bMV07CiAgICBMW2ldWzBdID0gYVtpK3N0YXJ0XVswXTsKICB9Cgpmb3Ioaj0wIDsgajxzaXplMiA7IGorKykKICB7CiAgICAgUltqXVsxXSA9IGFbaittaWRkbGUrMV1bMV07CiAgICAgUltqXVswXSA9IGFbaittaWRkbGUrMV1bMF07CiAgfQoKaT0wOwpqPTA7Cgp3aGlsZShpPHNpemUxICYmIGo8c2l6ZTIpCnsKICAgaWYoTFtpXVsxXSA8IFJbal1bMV0pCiAgICB7CiAgICAgYVtrXVsxXSA9IExbaV1bMV07CiAgICAgYVtrXVswXSA9IExbaV1bMF07CiAgICAgaysrOwogICAgIGkrKzsKfSAKIGVsc2V7CiAgICAgYVtrXVsxXSA9IFJbal1bMV07CiAgICAgYVtrXVswXSA9IFJbal1bMF07CiAgICAgIGsrKzsKICAgICAgaisrOwogfQp9Cgp3aGlsZShpPHNpemUxKQp7CmFba11bMV0gPSBMW2ldWzFdOwphW2tdWzBdID0gTFtpXVswXTsKaSsrOwprKys7Cn0KCndoaWxlKGo8c2l6ZTIpCnsKYVtrXVsxXSA9IFJbal1bMV07CmFba11bMF0gPSBSW2pdWzBdOwprKys7CmorKzsKfQp9Cgp2b2lkIG1lcmdlU29ydChpbnQgYVtdWzJdLCBpbnQgc3RhcnQgLCBpbnQgZW5kKQp7CmlmKHN0YXJ0IDwgZW5kKQp7CmludCBtaWRkbGUgPSBzdGFydCArIChlbmQgLSBzdGFydCkgLzI7Cm1lcmdlU29ydChhLHN0YXJ0LCBtaWRkbGUpOwptZXJnZVNvcnQoYSxtaWRkbGUrMSxlbmQpOwptZXJnZShhLHN0YXJ0LG1pZGRsZSxlbmQpOwp9Cn0KCmludCBtYWluKCkKewppbnQgYXJyYXlbMTBdWzJdID0ge3swLDU1fSx7MSwzfSx7Miw0fSx7Myw1fSx7NCw2fSx7NSw3fSx7Niw4fSx7Nyw5fSx7OCwxMH0sezksMn19OwppbnQgaTsKaW50IGxlbiA9IHNpemVvZihhcnJheSkvc2l6ZW9mKGFycmF5WzBdKSAtIDE7CmZvcihpID0gMCA7aSA8PSA5OyBpKyspCnByaW50ZigiJWQiLGFycmF5W2ldWzFdKTsKbWVyZ2VTb3J0KGFycmF5LDAsOSk7CnByaW50ZiAoICJcbkFycmF5IGFmdGVyIHNvcnRpbmc6XG4iKSA7CnByaW50ZiAoICJcbkluZGV4IGFmdGVyIHNvcnRpbmc6XG4iKSA7CmZvcihpID0gMCA7aSA8PSA5OyBpKyspCnByaW50ZigiJWQgIixhcnJheVtpXVswXSk7CnByaW50ZiAoICJcbkFycmF5IGFmdGVyIHNvcnRpbmc6XG4iKSA7CmZvcihpID0gMCA7aSA8PSA5OyBpKyspCnByaW50ZigiJWQgIixhcnJheVtpXVsxXSk7CnJldHVybiAwOwp9