#include<stdio.h>
#include<stdlib.h>
int n; //initial no. of integers in array
int * list; //pointer to the array of integers
int * MergeSort( int * A, int x, int y) ; //definition, return type is pointer to integer array
void main( )
{
printf ( "Enter the no. of integers in the array: " ) ;
list
= ( int * ) malloc ( n
* sizeof ( int ) ) ;
for ( int i= 0 ; i< n; i++ ) //taking input
{
}
MergeSort( list, 0 , n- 1 ) ; //calling MergeSort on list from index 0 to index n-1
for ( int i= 0 ; i< n; i++ ) //printing output
{
}
}
int * MergeSort( int * A, int x, int y) //declaration
{
if ( x== y) //base case, return the 1-element array itself
{
return A;
}
else
{
int size= 1 + y- x; //total no. of elements
int half= ( x+ y) / 2 ; //halving the array
MergeSort( A, x, half) ; //calling MergeSort on 1st half of array
MergeSort( A, half+ 1 , y) ; //calling MergeSort on 2nd half of array
int * C; //pointer to 3rd array
C
= ( int * ) malloc ( size
* sizeof ( int ) ) ; int j= x; //indicator for first half
int k= half; //indicator for 2nd half
int i= 0 ; //indicator for 3rd array
while ( ( j<= half) || ( k<= y) ) //till all the elements from either half are not exhausted
{
if ( A[ j] <= A[ k] ) //if element of first half is smaller, put that in C
{
C[ i] = A[ j] ;
j++;
}
else //otherwise put element of second half in C
{
C[ i] = A[ k] ;
k++;
}
i++; //increment indicator for C
}
if ( j== ( half+ 1 ) ) //if first half is finished
{
while ( i< size) //transfer all elements of second half in C
{
C[ i] = A[ k] ;
i++;
k++;
}
}
else if ( k== ( y+ 1 ) ) //if second half is finished
{
while ( i< size) //transfer all elements of 1st half in C
{
C[ i] = A[ j] ;
i++;
j++;
}
}
return C; //return C
}
}
I2luY2x1ZGU8c3RkaW8uaD4KI2luY2x1ZGU8c3RkbGliLmg+CgppbnQgbjsgLy9pbml0aWFsIG5vLiBvZiBpbnRlZ2VycyBpbiBhcnJheQppbnQgKmxpc3Q7IC8vcG9pbnRlciB0byB0aGUgYXJyYXkgb2YgaW50ZWdlcnMKaW50ICpNZXJnZVNvcnQoaW50ICpBLCBpbnQgeCwgaW50IHkpOyAvL2RlZmluaXRpb24sIHJldHVybiB0eXBlIGlzIHBvaW50ZXIgdG8gaW50ZWdlciBhcnJheQoKCnZvaWQgbWFpbigpCnsKCXByaW50ZigiRW50ZXIgdGhlIG5vLiBvZiBpbnRlZ2VycyBpbiB0aGUgYXJyYXk6ICIpOwoJc2NhbmYoIiVkIiwmbik7CgkKCWxpc3Q9KGludCAqKW1hbGxvYyhuKnNpemVvZihpbnQpKTsKCglmb3IoaW50IGk9MDtpPG47aSsrKSAvL3Rha2luZyBpbnB1dAoJewkKCQlwcmludGYoIlxuRW50ZXIgYSBuby46ICIpOwoJCXNjYW5mKCIlZCIsJmxpc3RbaV0pOwoJfQoKCU1lcmdlU29ydChsaXN0LDAsbi0xKTsgLy9jYWxsaW5nIE1lcmdlU29ydCBvbiBsaXN0IGZyb20gaW5kZXggMCB0byBpbmRleCBuLTEKCglmb3IoaW50IGk9MDtpPG47aSsrKSAvL3ByaW50aW5nIG91dHB1dAoJewkKCQlwcmludGYoIiVkICIsbGlzdFtpXSk7Cgl9CgkKfQoKaW50ICpNZXJnZVNvcnQoaW50ICpBLCBpbnQgeCwgaW50IHkpIC8vZGVjbGFyYXRpb24KewoJaWYoeD09eSkgLy9iYXNlIGNhc2UsIHJldHVybiB0aGUgMS1lbGVtZW50IGFycmF5IGl0c2VsZgoJewoJCXJldHVybiBBOwoJfQoKCWVsc2UKCXsKCQlpbnQgc2l6ZT0xK3kteDsgLy90b3RhbCBuby4gb2YgZWxlbWVudHMKCQlpbnQgaGFsZj0oeCt5KS8yOyAvL2hhbHZpbmcgdGhlIGFycmF5CgoJCU1lcmdlU29ydChBLCB4LCBoYWxmKTsJLy9jYWxsaW5nIE1lcmdlU29ydCBvbiAxc3QgaGFsZiBvZiBhcnJheQoJCU1lcmdlU29ydChBLCBoYWxmKzEsIHkpOwkJLy9jYWxsaW5nIE1lcmdlU29ydCBvbiAybmQgaGFsZiBvZiBhcnJheQoKCQkKCQlpbnQgKkM7CQkvL3BvaW50ZXIgdG8gM3JkIGFycmF5CgkJQz0oaW50ICopbWFsbG9jKHNpemUqc2l6ZW9mKGludCkpOwoJCWludCBqPXg7IAkJCS8vaW5kaWNhdG9yIGZvciBmaXJzdCBoYWxmCgkJaW50IGs9aGFsZjsJCQkvL2luZGljYXRvciBmb3IgMm5kIGhhbGYKCQlpbnQgaT0wOwkJCS8vaW5kaWNhdG9yIGZvciAzcmQgYXJyYXkKCgkJCgkJd2hpbGUoKGo8PWhhbGYpfHwoazw9eSkpCQkJLy90aWxsIGFsbCB0aGUgZWxlbWVudHMgZnJvbSBlaXRoZXIgaGFsZiBhcmUgbm90IGV4aGF1c3RlZAoJCXsKCQkJaWYoQVtqXTw9QVtrXSkJCQkJCS8vaWYgZWxlbWVudCBvZiBmaXJzdCBoYWxmIGlzIHNtYWxsZXIsIHB1dCB0aGF0IGluIEMKCQkJewoJCQkJQ1tpXT1BW2pdOwoJCQkJaisrOwoJCQl9CgkJCWVsc2UJCQkJCS8vb3RoZXJ3aXNlIHB1dCBlbGVtZW50IG9mIHNlY29uZCBoYWxmIGluIEMKCQkJewoJCQkJQ1tpXT1BW2tdOwoJCQkJaysrOwoJCQl9CgkJCWkrKzsJCQkJLy9pbmNyZW1lbnQgaW5kaWNhdG9yIGZvciBDCgkJfQoJCQoJCQoJCWlmKGo9PShoYWxmKzEpKSAJCS8vaWYgZmlyc3QgaGFsZiBpcyBmaW5pc2hlZAoJCXsKCQkJd2hpbGUoaTxzaXplKSAJCS8vdHJhbnNmZXIgYWxsIGVsZW1lbnRzIG9mIHNlY29uZCBoYWxmIGluIEMKCQkJewoJCQkJQ1tpXT1BW2tdOwoJCQkJaSsrOwoJCQkJaysrOwoJCQl9CgkJfQoJCWVsc2UgaWYoaz09KHkrMSkpIC8vaWYgc2Vjb25kIGhhbGYgaXMgZmluaXNoZWQKCQl7CgkJCXdoaWxlKGk8c2l6ZSkgLy90cmFuc2ZlciBhbGwgZWxlbWVudHMgb2YgMXN0IGhhbGYgaW4gQwoJCQl7CgkJCQlDW2ldPUFbal07CgkJCQlpKys7CgkJCQlqKys7CgkJCX0KCQl9CgkJCQkKCQkKCgkJcmV0dXJuIEM7IC8vcmV0dXJuIEMKCX0KCn0=
compilation info
prog.c:9:6: warning: return type of ‘main’ is not ‘int’ [-Wmain]
void main()
^
prog.c: In function ‘main’:
prog.c:16:2: error: ‘for’ loop initial declarations are only allowed in C99 mode
for(int i=0;i<n;i++) //taking input
^
prog.c:16:2: note: use option -std=c99 or -std=gnu99 to compile your code
prog.c:24:10: error: redefinition of ‘i’
for(int i=0;i<n;i++) //printing output
^
prog.c:16:10: note: previous definition of ‘i’ was here
for(int i=0;i<n;i++) //taking input
^
prog.c:24:2: error: ‘for’ loop initial declarations are only allowed in C99 mode
for(int i=0;i<n;i++) //printing output
^
stdout