전공/자료구조
[자료구조] C++로 우선순위 큐 구현 (오름차순 정렬)
kar7mp5
2024. 5. 3. 12:11
728x90
#include <iostream>
#include <vector>
using namespace std;
struct compare {
bool operator()(const int &a, const int &b) {
return a < b;
}
};
class unsortedSeqPQ {
private:
vector<int> seq;
public:
bool empty() {
return (seq.size() == 0);
}
void insert(int data) {
seq.push_back(data);
}
int min() {
if (empty())
return -1;
compare C;
int result = seq[0];
for (int i = 0; i < seq.size(); ++i) {
if (C(seq[i], result)) {
result = seq[i];
}
}
return result;
}
void removeMin() {
if (empty())
return;
compare C;
int minIdx = 0;
for (int i = 0; i < seq.size(); ++i) {
if (C(seq[i], seq[minIdx])) {
minIdx = i;
}
}
seq.erase(seq.begin() + minIdx);
}
};
int main() {
unsortedSeqPQ uq;
int T;
cin >> T;
while (T--) {
int N;
cin >> N;
for (int i = 0; i < N; ++i) {
int e;
cin >> e;
uq.insert(e);
}
for (int i = 0; i < N; ++i) {
cout << uq.min() << ' ';
uq.removeMin();
}
}
return 0;
}
728x90