博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++ 实现堆排序
阅读量:6917 次
发布时间:2019-06-27

本文共 1955 字,大约阅读时间需要 6 分钟。

前几天处理工作方面的事情, 确实耽误了几天, 导致博客停更了, 今天上午看到算法导论的堆排序, 想用 C++ 实现下, 就当练练手了.

算法导论里使用的是起始编号为 1 的容器, 那么实现的方法要不就是把 STL 容器打包, 自己建一个起始编号为 1 的容器, 要不就按照起始编号为 0 的来. 想了一下总觉得第一种方案有种削足适履的蛋疼感, 就是写出来也只能表示我对于 STL 容器的理解而不是对算法的理解, 因此如果真正理解了堆排序的思想, 那么无论是以什么值为起始编号都是一样的. 所以我选择了第二个方案, 代码如下:

#include 
#include
inline int Left (int i){ return 2 * i + 1;}inline int Right (int i){ return 2 * i + 2;}void MaxHeapify (std::deque
&ideq, int node){ int largest = node; int limit = ideq.size (); auto SmallerThan = [&] (int child){ return (child < limit) && (ideq[largest] < ideq[child]); }; int leftNode = Left (node); if (SmallerThan (leftNode)) { largest = leftNode; } int rightNode = Right (node); if (SmallerThan (rightNode)) { largest = rightNode; } if (largest != node) { std::swap (ideq[largest], ideq[node]); MaxHeapify (ideq, largest); }}std::deque
BuildMaxHeap (std::deque
&ideq){ std::deque
heap (ideq); for (int i = ideq.size () / 2 - 1; i > -1; --i) { MaxHeapify (heap, i); } return std::move (heap);}void HeapSort (std::deque
&ideq){ auto heap = BuildMaxHeap (std::move(ideq)); for (int i = ideq.size () - 1; i > -1; --i) { ideq[i] = std::move (heap[0]); heap.pop_front (); MaxHeapify (heap, 0); }}void Print (const std::deque
&ideq){ for (const auto &elem : ideq) { std::cout << elem << "\t"; }}int main (){ std::ios::sync_with_stdio (false); std::deque
ideq{ 5, 13, 2, 25, 7, 17, 20, 8, 4}; Print (ideq); HeapSort (ideq); std::cout << "\n"; Print (ideq); std::cout << std::endl; return 0;}

 

其实我觉得用 forward_list 似乎更为贴切, 但是使用上没有 deque 方便, so......

其间因为有些粗心, 导致了一些小问题, 所以不得不说 VS 的调试能力就是强啊......

转载于:https://www.cnblogs.com/wuOverflow/p/4149614.html

你可能感兴趣的文章
用Linux自带的Logrotate来管理日志
查看>>
MusicXML 3.0 (29) - 和弦文本
查看>>
乐在其中设计模式(C#) - 组合模式(Composite Pattern)
查看>>
Swift语言入门之旅
查看>>
数据库设计三大范式
查看>>
android 项目中出现红色感叹号的解决方法
查看>>
转: 解决【Unable to make the session state request to the session state server】
查看>>
Install Homebrew
查看>>
JS中数组的操作
查看>>
详解ios之ARkit为何碾压对手(二)
查看>>
优秀程序员自用框架、神器、资源总结
查看>>
为什么程序员的女朋友都喜欢来这家公司上班?
查看>>
百度安全发布2016年DDoS攻击报告
查看>>
解决3000万人就业、每天纳税一亿,2016年的阿里厉害了!
查看>>
联想Z5 Pro划时代旗舰发布 屏占比95.06%售价1998元起
查看>>
数据库新兵:分布式实时分析内存数据库eSight
查看>>
越夜越美 在黑暗中华为P20系列绽放绚烂之光
查看>>
御家汇放弃收购阿芙母公司 曾欲2019年全面接管日常运营
查看>>
Gartner首次发布超融合(HCI)魔力象限报告
查看>>
复兴号“绿巨人”春运期间亮相雄安新区
查看>>