Advertisement
thaihoa123

Untitled

Nov 18th, 2019
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.14 KB | None | 0 0
  1. //merge sort
  2. #include <iostream>
  3. #include <algorithm>
  4. using namespace std;
  5. int A[1000],B[1000],C[1000],data[1000];
  6. int main ()
  7. {
  8. int n,iA,iB,iC;
  9. iA=0;
  10. iB=0;
  11. iC=1;
  12. cin >> n;
  13. for(int i=0;i<=n-1;++i)
  14. {
  15. //nhap mang
  16. cin >> data[i];
  17. }
  18. int left, right,mid;
  19. left =1;
  20. right = n;
  21. mid = (left + right)/2;
  22. for(int i=0, j=mid ; i<=mid-1,j<=right-1 ; ++i,++j)
  23. {
  24. // tach lam 2 mang
  25. A[iA]=data[i];
  26. iA++;
  27. B[iB]=data[j];
  28. iB++;
  29. }
  30.  
  31.  
  32. for(int i=0;i<=mid-1;++i)
  33. // sap xep 2 mang
  34. {
  35. for(int j=0;j<=mid-1;++j)
  36. {
  37. if(A[j]>A[j+1])
  38. {
  39. swap(A[j],A[j+1]);
  40. }
  41. if(B[j]>B[j+1])
  42. {
  43. swap(B[j],B[j+1]);
  44. }
  45. }
  46. }
  47. // in ra 2 cai mang nay da sap xep
  48. for(int iA=1,iB=1;iA<=mid,iB<=right-mid;++iA,++iB)
  49. {
  50. cout << A[iA] <<' '<< B[iB] << "\n";
  51. }
  52. for(int iA=1,iB=1;iA<=mid,iB<=right-mid;)
  53. {
  54. if(A[iA]<B[iB])
  55. {
  56. // so sanh cac phan tu A va cac phan tu B de insert vao mang C
  57. C[iC]=A[iA];
  58. iA++;
  59. iC++;
  60. if(A[iA]>B[iB])
  61. {
  62. C[iC]=B[iB];
  63. iB++;
  64. iC++;
  65. }
  66. }
  67. }
  68. for(int iC=1;iC<=right;++iC)
  69. {
  70. cout << C[iC] << ' ' ;
  71. }
  72. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement