从所有堆栈的顶部选择最小值

时间:2014-03-09 07:20:07

标签: c++ heap

我正在尝试实施耐心排序。

现在我想做以下但不能这样做:

1)从给定桩的顶部选择(弹出)最小元素。如果堆积a和堆积b,两者都包含最小值,则从桩a中弹出a < b
2)继续这样做,直到所有的堆都是空的。

如何使用heap

执行此操作

我正在以这种方式制作堆栈(桩)的向量:

void patience_sort()
{
    typedef std::stack<int> PileType;
    std::vector<PileType>::iterator insert_it;
    std::vector<PileType> piles;

    for ( it = input.begin(); it != input.end(); it++)
    {
        PileType new_pile;
        new_pile.push(*it);
        insert_it =std::lower_bound(piles.begin(), piles.end(), new_pile, pile_less<PileType>);

        if (insert_it == piles.end())
            piles.push_back(new_pile);
        else
            insert_it->push(*it);
    }
}

0 个答案:

没有答案