Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- void mergesort(int ara[],int left,int right)
- {
- int mid;
- if(left<right)
- {
- mid=(left+right)/2;
- mergesort(ara,left,mid);
- mergesort(ara,mid+1,right);
- merge(ara,left,mid,right);
- }
- }
- void merge(int ara[],int left,int mid,int right)
- {
- int i,j,k,n1=mid-left+1,n2=right-mid;
- int L[n1+1],R[n2+1];
- for(i=0;i<n1;i++)L[i]=ara[left+i];
- for(j=0;j<n2;j++)R[j]=ara[mid+j+1];
- i=0,j=0,k=left;
- while(i<n1 && j<n2)
- {
- if(L[i]<=R[j])
- {
- ara[k]=L[i];
- i++;
- }
- else
- {
- ara[k]=R[j];
- j++;
- }
- k++;
- }
- while(i<n1)
- {
- ara[k]=L[i];
- i++,k++;
- }
- while(j<n2)
- {
- ara[k]=R[j];
- j++,k++;
- }
- }
- int main()
- {
- int i,n;
- scanf("%d",&n);
- int ara[n+1];
- for(i=0;i<n;i++)scanf("%d",&ara[i]);
- int start=0,finish=n-1;
- mergesort(ara,start,finish);
- printf("\n");
- for(i=0;i<n;i++)printf("%d ",ara[i]);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement