堆排序算法
2016-03-14 21:21
337 查看
#include <iostream> #include <algorithm> #include <vector> using namespace std; int main() { vector<int> ivec; for (int i = 4; i <= 8; ++i) ivec.push_back(i); for (int i = 3; i <= 7; ++i) ivec.push_back(i); for (int i = 1; i <= 5; ++i) ivec.push_back(i); for (vector<int>::iterator iter = ivec.begin(); iter != ivec.end(); ++iter) cout << *iter << ' '; cout << endl; make_heap(ivec.begin(), ivec.end()); //make_heap是堆排序算法, for (vector<int>::iterator iter = ivec.begin(); iter != ivec.end(); ++iter) cout << *iter << ' '; cout << endl; cout << endl; pop_heap(ivec.begin(), ivec.end()); // pop_heap()是把最大的那个数放到最后边,重新生成一个堆, for (vector<int>::iterator iter = ivec.begin(); iter != ivec.end(); ++iter) cout << *iter << ' '; cout << endl; cout << endl; ivec.pop_back(); // 把向量中的最后一个数据删除, for (vector<int>::iterator iter = ivec.begin(); iter != ivec.end(); ++iter) cout << *iter << ' '; cout << endl; cout << endl; ivec.push_back(10); // 将10加入到向量中保存在最后面, for (vector<int>::iterator iter = ivec.begin(); iter != ivec.end(); ++iter) cout << *iter << ' '; cout << endl; cout << endl; push_heap(ivec.begin(), ivec.end()); // push_heap()是加入一个新的数据得到新的堆, for (vector<int>::iterator iter = ivec.begin(); iter != ivec.end(); ++iter) cout << *iter << ' '; cout << endl; cout << endl; sort_heap(ivec.begin(), ivec.end()); // sort_heap 把堆变成不是堆,只是一个排序, for (vector<int>::iterator iter = ivec.begin(); iter != ivec.end(); ++iter) cout << *iter << ' '; cout << endl; cout << endl; return 0; }
相关文章推荐
- 最长不重复子串
- linux 下 tomcat的配置
- 希尔排序算法
- 收藏的一些播客地址
- 项目间移植代码时的一个感悟——解除依赖链!
- JVM内存管理
- mysql-5.7.10-winx64 MySQL服务无法启动,服务没有报告任何错误的解决办法
- 118. Pascal's Triangle
- BZOJ 1026
- Jsp到Action后台的数据接收方法
- 无限循环的轮播图ViewPager实现
- HDU 1074 The Highest Mark(状压DP)
- android 在eclipse中使用RecyclerView
- Python自然语言处理 - 系列三
- 说说css3动画效果那点事儿(一)
- 【杭电-oj】-2020-绝对值排序(冒泡排序注意第二个for ,负数变正数但原变量值不变可先平方)
- java代码实现mongodb故障迁移和读写分离
- 机器学习:决策树python实现
- Cordova phonegap开发环境搭建
- 2016校招百度美团360机器学习岗面试经历