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