Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <queue> //priority_queue
- #include <vector>
- #include <functional>
- #include <ctime>
- #include <cstdlib>
- using namespace std;
- vector<int> v; //힙을 출력할 때 나오는 숫자를 다시 넣어주기 위해
- priority_queue<int> maxHeap; //최대 힙 선언
- priority_queue<int> minHeap; //최소 힙 선언
- void printMaxHeap(void)
- {
- cout << "최대 힙 출력: ";
- while (!maxHeap.empty())
- {
- cout << maxHeap.top() << " ";
- v.push_back(maxHeap.top());
- maxHeap.pop();
- }
- cout << "\n";
- for (int i = 0; i < v.size(); i++)
- maxHeap.push(v[i]);
- v.clear();
- }
- void printMinHeap(void)
- {
- cout << "최소 힙 출력: ";
- while (!minHeap.empty())
- {
- cout << -minHeap.top() << " ";
- v.push_back(-minHeap.top());
- minHeap.pop();
- }
- cout << "\n";
- for (int i = 0; i < v.size(); i++)
- minHeap.push(-v[i]);
- v.clear();
- }
- int main(void)
- {
- ios_base::sync_with_stdio(0);
- cin.tie(0);
- int N; //우선순위 큐에 입력할 숫자
- cin >> N;
- srand((unsigned)time(NULL)); //시드 값 설정
- for (int i = 0; i < N; i++)
- maxHeap.push(rand() % 100 + 1); //1~100까지 랜덤
- //부호 변환해서 넣음
- for (int i = 0; i < N; i++)
- minHeap.push(-(rand() % 100 + 1)); //1~100까지 랜덤
- printMaxHeap();
- printMinHeap();
- cout << "최대 힙 ";
- int temp = rand() % 100 + 1;
- cout << temp;
- maxHeap.push(temp);
- cout << " 삽입\n";
- printMaxHeap();
- cout << "최소 힙 ";
- temp = rand() % 100 + 1;
- cout << temp;
- minHeap.push(-temp);
- cout << " 삽입\n";
- printMinHeap();
- cout << "최대 힙 ";
- temp = rand() % 100 + 1;
- cout << temp;
- maxHeap.push(temp);
- cout << " 삽입\n";
- printMaxHeap();
- cout << "최소 힙 ";
- temp = rand() % 100 + 1;
- cout << temp;
- minHeap.push(-temp);
- cout << " 삽입\n";
- printMinHeap();
- cout << "최대 힙 제거\n";
- maxHeap.pop();
- printMaxHeap();
- cout << "최소 힙 제거\n";
- minHeap.pop();
- printMinHeap();
- cout << "최대 힙 제거\n";
- maxHeap.pop();
- printMaxHeap();
- cout << "최소 힙 제거\n";
- minHeap.pop();
- printMinHeap();
- return 0;
- }
Add Comment
Please, Sign In to add comment