← Back to Blog

[Data Structure | C++] Priority Queue

computer science > algorithm

2026-07-041 min read

#computer-science #algorithm #data-structure

조건:

#include <iostream>
#include <vector>
using namespace std;

struct compare {
    bool operator()(const int &data, const int &b) {
        if (data % 2 != 0 && b % 2 != 0) {
            return data > b;
        } else if (data % 2 != 0) {
            return true;
        } else if (b % 2 != 0) {
            return false;
        } else {
            return data > 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;
}