Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- int a[20],n, nl, nr,left[20],right[20];
- void merge(int *l, int *r, int *x);
- void mergesort(int *x, int v);
- void main()
- {
- int i;
- printf("Enter the number of the elements \n");
- scanf("%d", &n);
- printf("Enter the array elements \n");
- for(i=0; i<n; i++)
- scanf("%d", &a[i]);
- printf("The array before sorting: \n");
- for(i=0; i<n; i++)
- printf("%d \n", a[i]);
- mergesort(a,n);
- printf("The array after sorting: \n");
- for(i=0; i<n; i++)
- printf("%d \n", a[i]);
- }
- void merge(int *l, int *r, int *x)
- {
- int i=0, j=0, k=0;
- while(i<nl && j<nr)
- {
- if(l[i]<=r[j])
- {
- x[k]=l[i];
- i++;
- }
- else
- {
- x[k]=r[j];
- j++;
- }
- k++;
- }
- while(i<nl)
- {
- x[k]=l[i];
- i++;
- k++;
- }
- while(j<nr)
- {
- x[k]=r[j];
- j++;
- k++;
- }
- }
- void mergesort(int *x, int v)
- {
- int mid,i;
- if(n<2)
- return;
- mid=n/2;
- nl=mid;
- nr= n-mid;
- for(i=0; i<mid; i++)
- left[i]=x[i];
- for(i=mid; i<n; i++)
- right[i-mid]= x[i];
- mergesort(left, mid);
- mergesort(right,v-mid);
- merge(left, right, a);
- }
Add Comment
Please, Sign In to add comment