fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. void vunDong(int x[], int k, int n) {
  4. if (k <= n/2-1) {
  5. int j = 2 * k + 1;
  6. if (j < n-1 && x[j] < x[j+1])
  7. j = j + 1;
  8. if (x[k] < x[j]) {
  9. int tg = x[k];
  10. x[k] = x[j];
  11. x[j] = tg;
  12. vunDong(x,j,n);
  13. }
  14. }
  15. }
  16. void taoDongDauTien(int x[], int n)
  17. {
  18. for (int k=n/2-1; k>=0; k--)
  19. vunDong(x, k, n);
  20. }
  21. void heapSort(int x[], int n)
  22. {
  23. taoDongDauTien(x,n);
  24. for (int i=n; i>=2; i--)
  25. {
  26. int tg = x[0];
  27. x[0] = x[i-1];
  28. x[i-1] = tg;
  29. vunDong(x, 0, i-1);
  30. }
  31. }
  32. void createNumber(int A[], int n)
  33. {
  34. srand((int)time(0));
  35. for (int i = 0; i < n; ++i)
  36. {
  37. A[i] = -10000 + rand() %(10000- (-10000) + 1);
  38. }
  39. }
  40. void show(int A[], int n)
  41. {
  42. for (int i = 0; i < n; ++i)
  43. {
  44. cout<<A[i]<<" ";
  45. }
  46. }
  47. int main(int argc, char const *argv[])
  48. {
  49. int n = 20;
  50. int *A = new int[n];
  51. createNumber(A,n);
  52. show(A,n);
  53. cout<<endl;
  54. heapSort(A,n);
  55. show(A,n);
  56. return 0;
  57. }
Success #stdin #stdout 0.01s 5284KB
stdin
Standard input is empty
stdout
3225 -1546 -7347 4643 3693 5692 2352 3616 4808 2225 7615 -38 9216 8563 4229 -8096 -9747 8302 -7779 -6719 
-9747 -8096 -7779 -7347 -6719 -1546 -38 2225 2352 3225 3616 3693 4229 4643 4808 5692 7615 8302 8563 9216