请问什么是谓词排序啊?能不能说明白些,谢谢。对于输入,输出的顺序可测吗?

#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
void main()
{
vector<int> v;
v.push_back(5);
v.push_back(6);
v.push_back(4);
v.push_back(8);
v.push_back(2);
v.push_back(3);
v.push_back(7);
v.push_back(1);
v.push_back(9);
make_heap(v.begin(),v.end());
v.push_back(20);
push_heap(v.begin(),v.end());
vector<int>::iterator ilocation;
for(ilocation=v.begin();ilocation!=v.end();ilocation++)
cout<<*ilocation<<' ';
cout<<endl;
pop_heap(v.begin(),v.end());
for(ilocation=v.begin();ilocation!=v.end();ilocation++)
cout<<*ilocation<<' ';
cout<<endl;
}

慕尼黑5688855
浏览 154回答 1
1回答

胡说叔叔

堆是如二叉树组织的元素的序列。 每个堆元素对应于树节点。 第一个值顺序 [首先。最后) 是在的根目录,并谓词按排序。 例如,如果谓词是更大的 <int>,堆中的每个元素满足以下 ; 而每个元素是大于或等于父级。 最小的元素存储在该的根,并所有子项都保存逐渐更大的值。make_heap 函数将 [首先转换范围最后一个) 到一个堆。sort_heap 函数对排序使用 make_heap 函数创建的"heapified 的序列。push_heap 函数在堆中插入一个新值。pop_heap 函数交换由 [first, last),指定在堆中的第一个和最后一个元素,然后减少恢复堆属性前一个序列的长度。例如Numbers { 4 10 70 10 30 69 96 100 }之后调用 make_heapNumbers { 4 10 69 10 30 70 96 100 }之后调用 sort_heapNumbers { 100 96 70 69 30 10 10 4 }之后调用 push_heap()Numbers { 4 7 10 30 100 10 70 96 69 }之后调用 pop_heapNumbers { 7 30 10 69 100 10 70 96 4 }
打开App,查看更多内容
随时随地看视频慕课网APP