Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include<limits.h>
- int arr[1000];
- void Merge_Sort(int , int);
- void Merge(int , int , int);
- int main()
- {
- arr[0] = INT_MIN;
- int n, i;
- printf("How many numbers : ");
- scanf("%d", &n);
- for(i=1; i<=n; i++)
- {
- arr[i] = rand()%1000;
- }
- printf("\n\nUnsorted Data :\n");
- for(i=1; i<=n; i++)
- {
- printf("%d ", arr[i]);
- }
- Merge_Sort(1, n);
- printf("\n\nSorted Data :\n");
- for(i=1; i<=n; i++)
- {
- printf("%d ", arr[i]);
- }
- return 0;
- }
- void Merge_Sort(int mn , int mx)
- {
- if(mn < mx)
- {
- int mid = ((mn + mx) / 2);
- Merge_Sort(mn , mid);
- Merge_Sort(mid+1 , mx);
- Merge(mn , mid , mx) ;
- }
- }
- void Merge(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])
- {
- arr[k]=L[i];
- i++;
- }
- else
- {
- arr[k]=R[j];
- j++;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement