Advertisement
jakaria_hossain

Merge Sort

Oct 23rd, 2018
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.08 KB | None | 0 0
  1. #include<stdio.h>
  2. void mergesort(int ara[],int left,int right)
  3. {
  4. int mid;
  5. if(left<right)
  6. {
  7. mid=(left+right)/2;
  8. mergesort(ara,left,mid);
  9. mergesort(ara,mid+1,right);
  10. merge(ara,left,mid,right);
  11. }
  12. }
  13. void merge(int ara[],int left,int mid,int right)
  14. {
  15. int i,j,k,n1=mid-left+1,n2=right-mid;
  16. int L[n1+1],R[n2+1];
  17. for(i=0;i<n1;i++)L[i]=ara[left+i];
  18. for(j=0;j<n2;j++)R[j]=ara[mid+j+1];
  19. i=0,j=0,k=left;
  20. while(i<n1 && j<n2)
  21. {
  22. if(L[i]<=R[j])
  23. {
  24. ara[k]=L[i];
  25. i++;
  26. }
  27. else
  28. {
  29. ara[k]=R[j];
  30. j++;
  31. }
  32.  
  33. k++;
  34. }
  35. while(i<n1)
  36. {
  37. ara[k]=L[i];
  38. i++,k++;
  39. }
  40. while(j<n2)
  41. {
  42. ara[k]=R[j];
  43. j++,k++;
  44. }
  45. }
  46. int main()
  47. {
  48. int i,n;
  49. scanf("%d",&n);
  50. int ara[n+1];
  51. for(i=0;i<n;i++)scanf("%d",&ara[i]);
  52. int start=0,finish=n-1;
  53. mergesort(ara,start,finish);
  54. printf("\n");
  55. for(i=0;i<n;i++)printf("%d ",ara[i]);
  56. return 0;
  57. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement