/* date:2014.12.15
堆结构:是一种树结构,准确说为完全二叉树。在这个树中,每个节点对应原始数据的一个记录,且满足一下条件:1.如果按照从小到大的顺序排序,要求非叶节点的数据要大于或等于其左右子节点的数据;2.如果按照从大到小的顺序排序,要求非叶节点的数据要小于或等于其左右子节点的数据。
堆排序思路:基于选择排序的思想,利用堆结构和二叉树的一些性质来完成数据的排序。
流程:1...
分类:
编程语言 时间:
2014-12-15 20:24:47
阅读次数:
226
堆排序和归并排序一样,时间复杂度为CodeCogsEqn(15),而且可以实现原址排序:任何时候都只需要常数个额外的元素空间存储临时数据。
分类:
编程语言 时间:
2014-12-13 23:06:21
阅读次数:
165
排序是数据结构的一种重要运算。本章的5.1节至5.6节介绍内排序的各种方法,5.7节介绍外排序方法。此外,堆排序也是一种典型的选择排序,有关堆排序的算法将在第8章中介绍。5.1基本概念在讨论排序的概念之前,首先引入排序码的概念。排序码是结点中的一个或多个字段,其值作为排序运算中的依据。排序码可以是关...
分类:
编程语言 时间:
2014-12-11 20:45:43
阅读次数:
183
原文: 一步一步写算法(之堆排序) 【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 堆排序是另外一种常用的递归排序。因为堆排序有着优秀的排序性能,所以在软件设计中也经常使用。堆排序有着属于自己的特殊性质,和二叉平衡树基本是一致的。打一个比方说,...
分类:
编程语言 时间:
2014-12-11 10:18:16
阅读次数:
225
我一向赞同一个理念: 用代码实现简单逻辑是不需要注释的, 因此我也就不写注释了, 直接上代码:#include #include #include inline int Parent (const int i){ return std::move( i % 2 ? (i - 1)...
分类:
编程语言 时间:
2014-12-10 07:04:13
阅读次数:
221
排序算法目录概述排序算法交换排序快速排序冒泡排序选择排序堆排序直接选择排序插入排序希尔排序直接插入排序排序算法的运用概述排序算法交换排序快速排序冒泡排序选择排序堆排序直接选择排序插入排序希尔排序直接插入排序排序算法的运用
分类:
编程语言 时间:
2014-12-09 11:53:51
阅读次数:
185
#include #define LeftChild(i) ( 2 * ( i ))void PercDown( int A[] , int i , int N){ int Child; int Tmp ; for (Tmp = A[i]; LeftChild(i) A[...
分类:
编程语言 时间:
2014-12-08 17:27:16
阅读次数:
178
前几天处理工作方面的事情, 确实耽误了几天, 导致博客停更了, 今天上午看到算法导论的堆排序, 想用 C++ 实现下, 就当练练手了.算法导论里使用的是起始编号为 1 的容器, 那么实现的方法要不就是把 STL 容器打包, 自己建一个起始编号为 1 的容器, 要不就按照起始编号为 0 的来. 想了一...
分类:
编程语言 时间:
2014-12-07 17:48:17
阅读次数:
179