C++のキューを小さい順にソートする方法は何ですか?

C++のキューを使用して昇順に並べ替える方法は、次の手順を使用することができます。

  1. 最初に、元データを順番にキューに挿入します。
  2. 次に、補助キューを作成し、元のキューの最初の要素を補助キューに挿入します。
  3. その後、元のキューから2番目の要素を取り出し、補助キューの要素と順番に比較します。元のキューの要素が補助キューの要素より小さい場合、適切な位置に補助キューに挿入します。元のキューの要素が補助キューの要素より大きい場合、補助キューの要素を順番に元のキューに挿入し、元のキューの要素を適切な位置に補助キューに挿入します。
  4. 元のキューが空になるまで、手順3を繰り返します。
  5. 最後、補助キューの要素は小さい順に並べ替えられた結果となります。

以下のはコードの例です:

#include <iostream>
#include <queue>

using namespace std;

void sortQueue(queue<int>& q) {
    queue<int> temp;
    while (!q.empty()) {
        int current = q.front();
        q.pop();
        while (!temp.empty() && temp.back() > current) {
            q.push(temp.back());
            temp.pop();
        }
        temp.push(current);
    }
    q = temp;
}

int main() {
    queue<int> q;
    q.push(5);
    q.push(2);
    q.push(8);
    q.push(1);
    q.push(3);

    cout << "原始队列:";
    while (!q.empty()) {
        cout << q.front() << " ";
        q.pop();
    }
    cout << endl;

    sortQueue(q);

    cout << "排序后的队列:";
    while (!q.empty()) {
        cout << q.front() << " ";
        q.pop();
    }
    cout << endl;

    return 0;
}

結果は出力されます。

原始队列:5 2 8 1 3 
排序后的队列:1 2 3 5 8 
bannerAds