![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法编程
owl_just
这个作者很懒,什么都没留下…
展开
-
排序算法———堆排序
堆排序首先,我们需要知道数据结构中堆的基本概念:堆排序分为大堆和小堆,大堆的父节点大于子节点(堆顶为最大值),同理小堆的父节点小于子节点(堆顶为最小值)。其次,我们再来了解下内存中堆的概念:堆区内存的使用特点是不连续,在c/c++中是要手动进行动态分配和释放的。手动进行分配了一定要记得释放,不然就会造成内存泄漏时间一长,程序就崩了。(题外话,推荐一个检查内存泄漏的工具 VLD)最后,回到重点...原创 2019-07-26 23:59:35 · 120 阅读 · 0 评论 -
排序算法————快排
快速排序我们知道,快速排序的平均时间复杂度为o(nlog(n)),就时间复杂度来讲,与堆排序是一致的,但是为什么代码实现中一般使用较多的是快速排序呢?原因如下:1)对于快速排序来说,数据都是顺序访问,而对于堆排序来说,数据是跳着访问的,这样对CPU缓存不友好。2)堆排序的第一步是建堆,建堆的过程会打乱数据原有的相对先后顺序,导致原数据的有序度降低。快速排序代码如下:void quick_...原创 2019-07-27 00:33:47 · 150 阅读 · 0 评论