Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- void mergesort(int a[],int i,int j);
- void merge(int a[],int p,int q,int r);
- int n;
- void main(){
- int a[10],i;
- printf("Enter no of elements:");
- scanf("%d",&n);
- printf("Enter array elements:");
- for(i=0;i<n;i++)
- scanf("%d",&a[i]);
- mergesort(a,0,n-1);
- printf("\nSorted array is :");
- for(i=0;i<(n);i++)
- printf("%d ",a[i]);
- }
- void mergesort(int a[],int p,int r){
- int q;
- if(p<r){
- q=((p+r)/2);
- mergesort(a,p,q);
- mergesort(a,q+1,r);
- merge(a,p,q,r);
- }
- }
- void merge(int a[],int p,int q,int r){
- int b[30];
- int i,j,k,c;
- i=p; //beginning index
- j=q+1;
- k=0; //will use it to uterate through b array
- while(i<=q && j<=r) //while elements in both lists
- {
- if(a[i]<a[j]) //checking two subarrays(metaphorically) (array is still same)
- b[k++]=a[i++];
- else
- b[k++]=a[j++];
- }
- while(i<=q){ //copy remaining elements to auxiliarry array from first half of original array as it is still unsorted(after the half)
- b[k++]=a[i++];
- }
- while(j<=r)
- b[k++]=a[j++];
- for(i=p,j=0;i<=r;i++,j++)
- a[i]=b[j];
- }
Add Comment
Please, Sign In to add comment