Advertisement
Farid_Mia59

mgsor

Nov 2nd, 2019
137
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.37 KB | None | 0 0
  1. #include <stdio.h>
  2. #define MAX 30
  3.  
  4. int main()
  5. {
  6. int arr[MAX],temp[MAX],i,j,k,n,size,l1,h1,l2,h2;
  7.  
  8. printf("Enter the number of elements : ");
  9. scanf("%d",&n);
  10.  
  11. for(i=0;i<n;i++)
  12. {
  13. printf("Enter element %d : ",i+1);
  14. scanf("%d",&arr[i]);
  15. }
  16.  
  17. printf("Unsorted list is : ");
  18. for( i = 0 ; i<n ; i++)
  19. printf("%d ", arr[i]);
  20.  
  21. /*l1 lower bound of first pair and so on*/
  22. for(size=1; size < n; size=size*2 )
  23. {
  24. l1=0;
  25. k=0; /*Index for temp array*/
  26. while( l1+size < n)
  27. {
  28. h1=l1+size-1;
  29. l2=h1+1;
  30. h2=l2+size-1;
  31. /* h2 exceeds the limlt of arr */
  32. if( h2>=n )
  33. h2=n-1;
  34.  
  35. /*Merge the two pairs with lower limits l1 and l2*/
  36. i=l1;
  37. j=l2;
  38.  
  39. while(i<=h1 && j<=h2 )
  40. {
  41. if( arr[i] <= arr[j] )
  42. temp[k++]=arr[i++];
  43. else
  44. temp[k++]=arr[j++];
  45. }
  46.  
  47. while(i<=h1)
  48. temp[k++]=arr[i++];
  49. while(j<=h2)
  50. temp[k++]=arr[j++];
  51. /**Merging completed**/
  52. /*Take the next two pairs for merging */
  53. l1=h2+1;
  54. }/*End of while*/
  55.  
  56. /*any pair left */
  57. for(i=l1; k<n; i++)
  58. temp[k++]=arr[i];
  59.  
  60. for(i=0;i<n;i++)
  61. arr[i]=temp[i];
  62.  
  63. printf("\nSize=%d \nElements are : ",size);
  64. for( i = 0 ; i<n ; i++)
  65. printf("%d ", arr[i]);
  66.  
  67. }/*End of for loop */
  68.  
  69. printf("Sorted list is :\n");
  70. for( i = 0 ; i<n ; i++)
  71. printf("%d ", arr[i]);
  72.  
  73. printf("\n");
  74.  
  75. return 0;
  76. }/*End of main()*/
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement