Guest User

Untitled

a guest
Nov 18th, 2018
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.00 KB | None | 0 0
  1. #include <iostream>
  2. #include <queue> //priority_queue
  3. #include <vector>
  4. #include <functional>
  5. #include <ctime>
  6. #include <cstdlib>
  7. using namespace std;
  8.  
  9. vector<int> v; //힙을 출력할 때 나오는 숫자를 다시 넣어주기 위해
  10. priority_queue<int> maxHeap; //최대 힙 선언
  11. priority_queue<int> minHeap; //최소 힙 선언
  12.  
  13. void printMaxHeap(void)
  14. {
  15. cout << "최대 힙 출력: ";
  16. while (!maxHeap.empty())
  17. {
  18. cout << maxHeap.top() << " ";
  19. v.push_back(maxHeap.top());
  20. maxHeap.pop();
  21. }
  22. cout << "\n";
  23. for (int i = 0; i < v.size(); i++)
  24. maxHeap.push(v[i]);
  25. v.clear();
  26. }
  27.  
  28. void printMinHeap(void)
  29. {
  30. cout << "최소 힙 출력: ";
  31. while (!minHeap.empty())
  32. {
  33. cout << -minHeap.top() << " ";
  34. v.push_back(-minHeap.top());
  35. minHeap.pop();
  36. }
  37. cout << "\n";
  38. for (int i = 0; i < v.size(); i++)
  39. minHeap.push(-v[i]);
  40. v.clear();
  41. }
  42.  
  43. int main(void)
  44. {
  45. ios_base::sync_with_stdio(0);
  46. cin.tie(0);
  47. int N; //우선순위 큐에 입력할 숫자
  48. cin >> N;
  49.  
  50. srand((unsigned)time(NULL)); //시드 값 설정
  51.  
  52. for (int i = 0; i < N; i++)
  53. maxHeap.push(rand() % 100 + 1); //1~100까지 랜덤
  54. //부호 변환해서 넣음
  55. for (int i = 0; i < N; i++)
  56. minHeap.push(-(rand() % 100 + 1)); //1~100까지 랜덤
  57.  
  58. printMaxHeap();
  59. printMinHeap();
  60.  
  61. cout << "최대 힙 ";
  62. int temp = rand() % 100 + 1;
  63. cout << temp;
  64. maxHeap.push(temp);
  65. cout << " 삽입\n";
  66. printMaxHeap();
  67.  
  68. cout << "최소 힙 ";
  69. temp = rand() % 100 + 1;
  70. cout << temp;
  71. minHeap.push(-temp);
  72. cout << " 삽입\n";
  73. printMinHeap();
  74.  
  75. cout << "최대 힙 ";
  76. temp = rand() % 100 + 1;
  77. cout << temp;
  78. maxHeap.push(temp);
  79. cout << " 삽입\n";
  80. printMaxHeap();
  81.  
  82. cout << "최소 힙 ";
  83. temp = rand() % 100 + 1;
  84. cout << temp;
  85. minHeap.push(-temp);
  86. cout << " 삽입\n";
  87. printMinHeap();
  88.  
  89. cout << "최대 힙 제거\n";
  90. maxHeap.pop();
  91. printMaxHeap();
  92.  
  93. cout << "최소 힙 제거\n";
  94. minHeap.pop();
  95. printMinHeap();
  96.  
  97. cout << "최대 힙 제거\n";
  98. maxHeap.pop();
  99. printMaxHeap();
  100.  
  101. cout << "최소 힙 제거\n";
  102. minHeap.pop();
  103. printMinHeap();
  104. return 0;
  105. }
Add Comment
Please, Sign In to add comment