Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include<limits.h>
- int a[1000];
- int b[1000];
- int n ;
- void input();
- void output();
- void Merge_Sort(int [] , int , int);
- void Merge(int[] , int , int , int);
- void reverse();
- int main()
- {
- input();
- Merge_Sort(a,1,n);
- reverse();
- output();
- }
- void reverse()
- {
- int i,j,k;
- i=n;
- for(j=1;j<=n;j++)
- {
- b[j]=a[i];
- i--;
- }
- i=1;
- for(j=1;j<=n;j++)
- {
- a[i]=b[j];
- i++;
- }
- }
- void input()
- {
- printf("How many numbers:");
- scanf("%d",&n);
- printf("Insert numbers:\n");
- int i;
- for(i=1 ; i<=n ; i++)
- {
- scanf("%d",&a[i]);
- }
- }
- void Merge_Sort(int arr[],int mn , int mx)
- {
- if(mn < mx)
- {
- int mid = ((mn + mx) / 2);
- Merge_Sort(arr , mn , mid);
- Merge_Sort(arr , mid+1 , mx);
- Merge(arr , mn , mid , mx) ;
- }
- }
- void Merge(int arr[] , int mn , int mid , int mx)
- {
- int n1=mid - mn + 1 ;
- int n2=mx-mid ;
- int L[n1 + 1] , R[n2 + 1];
- int i,j,k;
- for( i=1 ; i<=n1 ; i++)
- {
- L[i] = arr[mn + i -1 ] ;
- }
- for( j=1 ; j<=n2 ; j++)
- {
- R[j] = arr[mid + j];
- }
- L[n1 + 1] = INT_MAX ;
- R[n2 + 1] = INT_MAX ;
- i=1 ; j=1 ;
- for( k=mn ; k<=mx ; k++)
- {
- if(L[i]<R[j])
- {
- a[k]=L[i];
- i++;
- }
- else
- {
- a[k]=R[j];
- j++;
- }
- }
- }
- void output()
- {
- printf("\nSorted array:");
- int i;
- for(i=1 ; i<=n ; i++)
- {
- printf("%d ",a[i]);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement