我正在尝试实施耐心排序。
现在我想做以下但不能这样做:
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);
}
}