这部分为了日后方便复习,直接摘录《大话数据结构》P428~430。不擅长记忆,理解每种排序算法之后,面试时候可以推一下。 ...
分类:
编程语言 时间:
2016-04-26 00:23:02
阅读次数:
195
对《大话数据结构》P417~P427—快速排序,进行了自己的理解并完善了代码。 一、快排普通版 基本思想:通过一趟排序,将待排记录分割成以枢轴为分界的独立的两部分,一部分的数都比枢轴小,另一部分的数都比枢轴大。这句话也体现了枢轴的作用。再通过递归,对每部分继续排序。 void QSort(SqLis ...
分类:
编程语言 时间:
2016-04-25 22:19:36
阅读次数:
273
《大话数据结构》中对算法的时间复杂度定义如下: “算法分析时,语句的总执行次数T[n]是关于问题规模n的函数,进而分析T[n]随n的变化情况并确定T[n]的数量级。算法的时间复杂度,也就是算法的时间度量,记做T[n]=O(f[n]),表示随问题规模n的增大,算法的执行时间的增长率和f[n]的增长率相 ...
分类:
编程语言 时间:
2016-04-25 14:43:06
阅读次数:
225
对《大话数据结构》P396~P406—堆排序,进行了自己的理解并完善了代码。 一、堆排序之前需要掌握以下知识 1、完全二叉树 例如下图这样的,编号出现空档,就不是完全二叉树。 2、完全二叉树的性质 这三个性质中最重要的是1,看图就很好理解,即如果i>1,i的双亲节点是i/2。 3、堆 4、堆的性质 ...
分类:
编程语言 时间:
2016-04-24 15:45:24
阅读次数:
253
对《大话数据结构》P389~P396—希尔排序,进行了自己的理解并完善了代码。 代码和解释如下(VS2012测试通过): 运行结果: 关于时间复杂度的分析,直接把书上的内容copy过来,不是很理解,欢迎讨论。 ...
分类:
编程语言 时间:
2016-04-22 23:54:39
阅读次数:
158
第6章
树
6.2 树的定义
之前我们一直在谈的是一对一的线性结构,可现实中,还有很多一对多的情况需要处理,所以我们需要研究这种一对多的数据结构——“树”。
树(Tree)是n(n≥0)个结点的有限集。n=0时称为空树。在任意一棵非空树中:(1)有且仅有一个特定的称为根(Root)的结点;(2)当n>1时,其余结点可分为m(m>0)个互不相交的有限集T1、T2、……、Tm,其中每一个集合本...
分类:
其他好文 时间:
2016-04-22 19:51:42
阅读次数:
245
对《大话数据结构》P384~P385—简单选择排序,进行了自己的理解并完善了代码。 简单选择排序如下: 代码和解释如下(VS2012测试通过): 运行结果: 时间复杂度分析见草稿图。 时间复杂度是O(n2)。 ...
分类:
编程语言 时间:
2016-04-20 19:47:00
阅读次数:
322
对《大话数据结构》P378~P383—冒泡排序,进行了自己的理解并完善了代码。 三种冒泡排序如下: 1、冒泡排序初级版 代码和解释如下(VS2012测试通过): 运行结果: 2、冒泡排序正宗版 代码和解释如下(VS2012测试通过): 运行结果: 3、冒泡排序优化版 代码和解释如下(VS2012测试 ...
分类:
编程语言 时间:
2016-04-20 14:56:23
阅读次数:
217
参考《大话数据结构》P178~184——二叉树的遍历。 用书上的这个二叉树: 代码和解释如下(VS2012测试通过): 运行结果: 下图方便理解递归。但写递归代码的时候不用这么麻烦,毕竟人脑更擅长考虑递推。重点放在求解目标上,以及递归结束的条件。 ...
分类:
其他好文 时间:
2016-04-19 14:00:38
阅读次数:
205
参考《大话数据结构》P187~188——二叉树的建立。 举个简单的例子: 代码和解释如下(VS2012测试通过): 运行结果: ...
分类:
其他好文 时间:
2016-04-19 13:47:14
阅读次数:
150