fork download
  1. #include<stdio.h>
  2. void merge(int [],int ,int ,int );
  3. void partition(int [],int ,int );
  4. int main()
  5. {
  6. int a[20];
  7. int i,size;
  8. printf("Unsorted List:\t");
  9. //printf("Enter total no. of elements : ");
  10. scanf("%d",&size);
  11. for(i=0; i<size; i++)
  12. {
  13. scanf("%d",&a[i]);
  14. printf("%d\t",a[i]);
  15. }
  16. printf("\n");
  17. partition(a,0,size-1);
  18. printf("Sorted List :\t");
  19. for(i=0; i<size; i++)
  20. printf("%d \t",a[i]);
  21. return 0;
  22. }
  23. void partition(int a[],int min,int max)
  24. {
  25. int mid;
  26. if(min<max)
  27. {
  28. mid=(min+max)/2;
  29. partition(a,min,mid);
  30. partition(a,mid+1,max);
  31. merge(a,min,mid,max);
  32. }
  33. }
  34. void merge(int a[],int min,int mid,int max)
  35. {
  36. int temp[20];
  37. int i,j,k,m;
  38. j=min;
  39. m=mid+1;
  40. for(i=min; j<=mid && m<=max ; i++)
  41. {
  42. if(a[j]<=a[m])
  43. {
  44. temp[i]=a[j];
  45. j++;
  46. }
  47. else
  48. {
  49. temp[i]=a[m];
  50. m++;
  51. }
  52. }
  53. if(j>mid)
  54. {
  55. for(k=m; k<=max; k++)
  56. {
  57. temp[i]=a[k];
  58. i++;
  59. }
  60. }
  61. else
  62. {
  63. for(k=j; k<=mid; k++)
  64. {
  65. temp[i]=a[k];
  66. i++;
  67. }
  68. }
  69. for(k=min; k<=max; k++)
  70. a[k]=temp[k];
  71. }
  72.  
  73.  
Success #stdin #stdout 0s 2252KB
stdin
11
7
44
2
10
1
35
74
88
5
3
15
stdout
Unsorted List:	7	44	2	10	1	35	74	88	5	3	15	
Sorted List  :	1 	2 	3 	5 	7 	10 	15 	35 	44 	74 	88