关于堆和堆排序
2013-09-17 22:40
162 查看
数据结构的的原理及实现,这里讲的很好http://blog.csdn.net/morewindows/article/details/6709644
而关于STL中的堆的使用Morewindows讲的也不错http://blog.csdn.net/morewindows/article/details/6967409
但是其中存在几个小问题:
1.vector<int> *pvet = new vector<int>(40);
没有必要申请40的空间,20足矣。
2.int a[MAXN];pvet->assign(a, a + MAXN);会将空间设置回20,看来assign函数还是挺厉害的。
3.如果需要小根堆,则需要自己写函数
bool cmp(int a,int b)
{
return a>b;
}
make_heap(pvet->begin(), pvet->end(),cmp); //之后每次使用都需要加入cmp否则运行时错误
pvet->push_back(25);
push_heap(pvet->begin(), pvet->end(),cmp);
pop_heap(pvet->begin(), pvet->end(),cmp);
pvet->pop_back();
sort_heap(pvet->begin(), pvet->end(),cmp); //但对这一句没用,排序结果总是升序的。
而关于STL中的堆的使用Morewindows讲的也不错http://blog.csdn.net/morewindows/article/details/6967409
但是其中存在几个小问题:
1.vector<int> *pvet = new vector<int>(40);
没有必要申请40的空间,20足矣。
2.int a[MAXN];pvet->assign(a, a + MAXN);会将空间设置回20,看来assign函数还是挺厉害的。
3.如果需要小根堆,则需要自己写函数
bool cmp(int a,int b)
{
return a>b;
}
make_heap(pvet->begin(), pvet->end(),cmp); //之后每次使用都需要加入cmp否则运行时错误
pvet->push_back(25);
push_heap(pvet->begin(), pvet->end(),cmp);
pop_heap(pvet->begin(), pvet->end(),cmp);
pvet->pop_back();
sort_heap(pvet->begin(), pvet->end(),cmp); //但对这一句没用,排序结果总是升序的。
相关文章推荐
- 一些关于堆排序东西!
- 关于堆排序的理解
- 关于堆排序、归并排序、快速排序的比较,到底谁快
- 关于堆排序的一些思考
- 堆排序——C++关于堆排序的库函数排序
- 排序(三)——关于堆排序
- 排序(三)——关于堆排序
- 关于几种排序算法(简易冒泡,正宗冒泡,选择,插入,快速,希尔,堆排序)
- 关于堆排序
- 关于堆排序
- 关于堆排序和topK算法的PHP实现
- 关于堆排序
- 关于堆排序的一点总结
- 关于堆排序建堆时间以及堆排序的分析之暑假学习记录
- 关于堆排序中MAX-HEAPIFY中时间复杂度的分析
- 关于堆排序的c++算法
- 关于堆排序(参考自算法导论)
- 关于堆排序的了解和实现
- 关于面向对象(1)抽象篇
- ajax 开源项目 DWR & 关于 Web Serviece 以及 Axis2 技术