Advertisement
a_pramanik

merge sort

Apr 17th, 2017
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.72 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. vector <int> merge(vector <int>left, vector <int>right)
  5. {
  6. int leftSz = left.size();
  7. int rightSz = right.size();
  8. vector <int> sortedArr(leftSz+rightSz);
  9. int l = 0, r = 0, index = 0;
  10. while(l < leftSz && r < rightSz)
  11. {
  12. if(left[l] <= right[r])
  13. {
  14. sortedArr[index] = left[l];
  15. l++;
  16. }
  17. else
  18. {
  19. sortedArr[index] = right[r];
  20. r++;
  21. }
  22. index++;
  23. }
  24.  
  25.  
  26. while(l<leftSz)
  27. {
  28. sortedArr[index]=left[l];
  29. l++;
  30. index++;
  31. }
  32. while(r<rightSz)
  33. {
  34. sortedArr[index]=right[r];
  35. r++;
  36. index++;
  37. }
  38. return sortedArr;
  39. }
  40.  
  41. void printVector(vector <int> numbers)
  42. {
  43. int size=numbers.size();
  44. for(int i=0; i<size; i++) cout<<numbers[i]<<" ";
  45. cout<<endl;
  46. }
  47.  
  48.  
  49. vector <int> mergeSOrt(vector <int> numbers)
  50. {
  51. int l=0, h=numbers.size()-1;
  52. if(l!=h)
  53. {
  54. int m=h/2;
  55. vector <int>left, right;
  56. for(int i=0; i<=m; i++) left.push_back(numbers[i]);
  57. for(int i=m+1; i<=h; i++) right.push_back(numbers[i]);
  58. left=mergeSOrt(left);
  59. right=mergeSOrt(right);
  60. numbers=merge(left, right);
  61. }
  62. return numbers;
  63. }
  64.  
  65. int main()
  66. {
  67. vector <int>numbers;
  68. numbers.clear();
  69.  
  70. int sz = 500000;
  71. for(int i=1; i<=sz; i++)
  72. {
  73. int n = rand();
  74. numbers.push_back(n);
  75. }
  76. std::clock_t start;
  77. double duration;
  78.  
  79. start = std::clock();
  80.  
  81. numbers=mergeSOrt(numbers);
  82. duration = ( std::clock() - start ) / (double) CLOCKS_PER_SEC;
  83.  
  84. cout<<duration*1000.0<<endl;
  85.  
  86. return 0;
  87. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement