#include <stdio.h>
#include <stdlib.h>
void merge(int arr[],int l,int m,int r){
int first = m-l+1;
int second = r-m;
int *L
=(int *)malloc(first
*sizeof(int)); int *R
=(int *)malloc(second
*sizeof(int)); int i=0;
int j=0;
for(i=0;i<first;i++) L[i]=arr[l+i];
for(j=0;j<second;j++) R[j]=arr[1+j+m];
i = j = 0;
int cnt = l;
while(i<first && j<second){
if(L[i]<R[j])
arr[cnt++]=L[i++];
else
arr[cnt++]=R[j++];
}
while(i<first) arr[cnt++]=L[i++];
while(j<second) arr[cnt++]=R[j++];
}
void merge_sort(int arr[],int left,int right){
if(left<right){
int mid=(left+right)/2;
merge_sort(arr,left,mid);
merge_sort(arr,mid+1,right);
merge(arr,left,mid,right);
}
}
int main() {
int mehdi[]={5,4,3,2,1};
merge_sort(mehdi,0,(int)4);
for(int i
=0;i
<5;++i
) printf("%d ",mehdi
[i
]); return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCnZvaWQgbWVyZ2UoaW50IGFycltdLGludCBsLGludCBtLGludCByKXsKICAgICAgaW50IGZpcnN0ID0gbS1sKzE7CiAgICAgIGludCBzZWNvbmQgPSByLW07CiAgICAgIGludCAqTD0oaW50ICopbWFsbG9jKGZpcnN0KnNpemVvZihpbnQpKTsKICAgICAgaW50ICpSPShpbnQgKiltYWxsb2Moc2Vjb25kKnNpemVvZihpbnQpKTsKICAgICAgaW50IGk9MDsKICAgICAgaW50IGo9MDsKICAgICAgZm9yKGk9MDtpPGZpcnN0O2krKykgTFtpXT1hcnJbbCtpXTsKICAgICAgZm9yKGo9MDtqPHNlY29uZDtqKyspIFJbal09YXJyWzEraittXTsKICAgICAgaSA9IGogPSAwOwogICAgICBpbnQgY250ID0gbDsKICAgICAgd2hpbGUoaTxmaXJzdCAmJiBqPHNlY29uZCl7CiAgICAgICAgIGlmKExbaV08UltqXSkKICAgICAgICAgICAgYXJyW2NudCsrXT1MW2krK107CiAgICAgICAgIGVsc2UgCiAgICAgICAgICAgIGFycltjbnQrK109UltqKytdOyAgIAogICAgICB9CiAgICAgIHdoaWxlKGk8Zmlyc3QpIGFycltjbnQrK109TFtpKytdOwogICAgICB3aGlsZShqPHNlY29uZCkgYXJyW2NudCsrXT1SW2orK107CiAgICAgIGZyZWUoTCk7CiAgICAgIGZyZWUoUik7CiAgICAgfQoKICAgICB2b2lkIG1lcmdlX3NvcnQoaW50IGFycltdLGludCBsZWZ0LGludCByaWdodCl7CiAgICAgICAgaWYobGVmdDxyaWdodCl7CiAgICAgICAgIGludCBtaWQ9KGxlZnQrcmlnaHQpLzI7IAkKICAgICAgICAgbWVyZ2Vfc29ydChhcnIsbGVmdCxtaWQpOwogICAgICAgICBtZXJnZV9zb3J0KGFycixtaWQrMSxyaWdodCk7CiAgICAgICAgIG1lcmdlKGFycixsZWZ0LG1pZCxyaWdodCk7CiAgICAgICAgfSAKICAgICAgICAKICAgICB9CgogICAgaW50IG1haW4oKSB7CiAgICBpbnQgbWVoZGlbXT17NSw0LDMsMiwxfTsKICAgIG1lcmdlX3NvcnQobWVoZGksMCwoaW50KTQpOwogICAgZm9yKGludCBpPTA7aTw1OysraSkgcHJpbnRmKCIlZCAiLG1laGRpW2ldKTsKICAgIHJldHVybiAwOwp9