전공/자료구조

[자료구조] 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