Advertisement
maycod23

Partioning.cpp

May 19th, 2023
31
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.03 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4. // int partioning(int x, vector<int> &v, int start, int end) {
  5. // //array,start,end(inclusive),x
  6. // int p = start, i = start;
  7. // //left to right iteration
  8. // while (i <= end) {
  9. // if (v[i] == x) {
  10. // swap(v[i], v[p]);
  11. // p++;
  12. // }
  13. // i++;
  14. // }
  15. // return p;
  16. // // rule-2-- all ele fro [0,p-1] (after partioining) is partioned
  17. // }
  18.  
  19.  
  20. int do_the_partition(vector<int> v, int &ele) {
  21. int start = 0, end = v.size() - 1;
  22. int i = start, p_index = start;
  23. while (i <= end) {
  24. //we are more interested in the partioning the left part
  25. if (v[i] < ele) {
  26. swap(v[i], v[p_index]);
  27. p_index++;
  28. }
  29. i++;
  30. }
  31. cout << "After Partioning for ele-> " << ele << " " << endl;
  32. for (auto i : v) cout << i << " "; cout << endl;
  33. // this is going for ditinct ele in vector or multiple ele in vector
  34. return p_index;
  35. }
  36.  
  37.  
  38. void sort_an_array_012(vector<int> &v) {
  39. int n = v.size();
  40. int low = 0, high = n - 1, i = 0;
  41. while (i <= high) {
  42. if (v[i] == 0) {
  43. swap(v[i], v[low]);
  44. low++;
  45. }
  46. else if (v[i] == 2) {
  47. swap(v[i], v[high]);
  48. high--; i--;
  49. }
  50. i++;
  51. }
  52. }
  53.  
  54. int main() {
  55.  
  56. int n; cin >> n;
  57. vector<int> v(n);
  58. for (int i = 0; i < n; i++) cin >> v[i];
  59.  
  60. int p = n - 1, i = n - 1;
  61. while (i >= 0) {
  62. if (v[i] == 0) {
  63. swap(v[i], v[p]);
  64. p--;
  65. }
  66. i--;
  67. }
  68. for (auto i : v) cout << i << " "; cout << endl;
  69.  
  70.  
  71. // int n, ele; cin >> n >> ele;
  72. // vector<int> v(n);
  73. // for (int i = 0; i < n; i++) cin >> v[i];
  74.  
  75. // int p = 0, i = 0;
  76. // while (i < n) {
  77. // if (v[i] <= ele) {
  78. // swap(v[i], v[p]);
  79. // p++;
  80. // }
  81. // i++;
  82. // }
  83.  
  84. // for (auto i : v) cout << i << " "; cout << endl;
  85.  
  86.  
  87. // int n; cin >> n;
  88. // //n==8
  89. // // 1 2 0 1 2 0 0 1
  90. // vector<int> v(n);
  91. // for (int i = 0; i < n; i++) cin >> v[i];
  92.  
  93. // int tempstart1 = partioning(0, v, 0, n - 1);//partioning on the basis of 0 on whole array
  94. // //return type -- void, when single time part. is there
  95.  
  96. // int tempstart2 = partioning(1, v, tempstart1, n - 1);//partioning on the basis of 1 on remaining array
  97. // //return type-- int, beacuse to know that how much part of array is remained to be part.
  98.  
  99. // for (auto i : v) cout << i << " "; cout << endl;
  100.  
  101. // //complexity-> O(N) + O(N)===> O(N)
  102.  
  103.  
  104. // int n; cin >> n;
  105. // vector<int> v(n);
  106. // for (int i = 0; i < n; i++) cin >> v[i];
  107. // int u; cin >> u;
  108. // int count = 1;
  109. // while (u--) {
  110. // int ind; cin >> ind;
  111. // int ele = v[ind];
  112. // int ans = do_the_partition(v, ele);
  113. // cout << "User-> " << count << " ";
  114. // cout << ans << endl << endl;
  115. // count++;
  116. // }
  117.  
  118. // 8
  119. // index-> 0 1 2 3 4 5 6 7
  120. // ele -> 60 - 30 30 0 - 6 78 69 1000
  121.  
  122. // sort -> -30 - 6 0 30 60 69 78 1000
  123. // users-> 3
  124. // {
  125. // u1->ind = 2 ans->3
  126. // u2->ind = 1 ans->0
  127. // u3->ind = 4 ans->1
  128. // }
  129. int n; cin >> n;
  130. vector<int> v(n);
  131. for (int i = 0; i < n; i++) cin >> v[i];
  132. sort_an_array_012(v);
  133. for (auto i : v) cout << i << " "; cout << endl;
  134.  
  135.  
  136. return 0;
  137. }
  138.  
  139.  
  140.  
  141.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement