Max-heap && Min-heap && push_heap

时间:2023-03-09 16:45:14
Max-heap && Min-heap && push_heap

最大堆:make_heap(vi.begin(),vi.end())

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
int ia[] = {, , , , , , , , };
make_heap(ia, ia + );
for(int i = ; i < ; i++)
{
cout << ia[i] << " ";
}
cout << endl;
make_heap(ia, ia + );
pop_heap(ia, ia + );
cout << ia[] << endl;
}

最小堆:sort_heap(vi,vi+n)

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
int ia[] = {, , , , , , , , };
sort_heap(ia, ia + );
for(int i = ; i < ; i++)
{
cout << ia[i] << " ";
}
cout << endl;
make_heap(ia, ia + );
pop_heap(ia, ia + );
cout << ia[] << endl;
}

Max-heap 取走根节点后完全二叉树的排序:

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
int ia[] = {, , , , , , , , };
vector<int>vi(ia, ia + );
make_heap(vi.begin(), vi.end());
for(int i = ; i < vi.size(); i++)
{
cout << vi[i] << " ";
}
cout << endl;
pop_heap(vi.begin(), vi.end());
for(int i = ; i < vi.size(); ++i)
{
/* code */
cout << vi[i] << " ";
}
cout << endl;
for(int i = ; i < vi.size(); ++i)
{
/* code */
cout << vi[i] << " ";
}
cout << endl;
return ;
}