Advertisement
Guest User

Untitled

a guest
Oct 16th, 2019
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.80 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. void siftdown(vector<int> &a , int i) {
  5. int l = 2*i + 1;
  6. int r = 2*i + 2;
  7. int ind = i;
  8. if ((l < a.size()) && (a[ind] < a[l]))
  9. ind = l;
  10. if (( r < a.size()) && (a[ind] < a[r]))
  11. ind = r;
  12. if (ind != i)
  13. swap(a[i], a[ind]);
  14. siftdown(a, ind);
  15. }
  16. int build(vector<int> &a){
  17. for (int i = a.size() / 2 ; i >= 0; --i )
  18. siftdown(a, i);
  19. }
  20. int heapsort(vector<int> &a ){
  21. build(a);
  22. for (int i = a.size() - 1; i >= 0; --i)
  23. swap (a[0], a[i]);
  24. }
  25.  
  26. int main(void) {
  27. int N;
  28. vector<int> arr;
  29. cin >> N;
  30. for (int i = 0; i < N; i++) {
  31. int x;
  32. cin>>x;
  33. arr.push_back(x)
  34. }
  35. heapsort(arr);
  36. for (int i = 0; i < N; ++i)
  37. cout << arr[i] <<" ";
  38. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement