对于 《数据结构与算法分析——C语言描述》 一书第
20 页所描述的算法 3,相信会有很多人表示不怎么理解,下面我由具体问题的求解过程出发,谈谈我自己的理解:
首先,什么是分治法呢?所谓 分治法,就是 将一个问题的求解过程分解为两个大小相等的子问题进行求解,如果分解后的子问题本身也可以分解的话,则将这个分解的过程进行下去,直至最后得到的子问题不能再分解为止,最后将子问题的解逐步合并并可能...
分类:
其他好文 时间:
2014-07-01 11:03:52
阅读次数:
169
#include #include // 第一题// 找出N个数的第k个最大者// 方法1:排序(冒泡),降序找出第k个值// 方法2:选前k个点进行降序排序,后面的数进行比较,// 如果数比第k个数小则忽略, 复杂度低于方法1#define TYPE int#define TESTBUBLESOR...
分类:
其他好文 时间:
2014-06-18 22:43:15
阅读次数:
335
本节介绍如何在程序中表示一张图。
顶点
在程序中,顶点用整数表示就可以了。因为整数可以作为数组的下标,也可以作为哈希表的键。所以用整数是最方便的。
当然,在一张图中可能会出现一些异常情况,比如自己连接自己,两个顶点之间存在多个边。这些异常情况也是要考虑的。
接口
为了表示一张图,就要创建专...
分类:
其他好文 时间:
2014-06-18 06:56:36
阅读次数:
208
程序=数据结构+算法。因此我认为自己该再好好补充下数据结构相关的知识,今天开始就以著名老师严蔚敏的数据结构一书为参考,边学边记。线性表基本API初始条件操作结果InitList(&L)构造一个空的线性表L。DestroyList(&L)线性表L已存在。销毁线性表L。ClearList(&L)线性表L...
分类:
其他好文 时间:
2014-06-16 13:37:26
阅读次数:
166
排序从大体上来讲,做了两件事情:
1、比较两个数据项;
2、交换两个数据项,或复制其中一项
一、冒泡排序
大O表示法:交换次数和比较次数都为O(N*N)。
算法原理:
比较相邻的元素。如果第一个比第二个大,就交换他们两个。
对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。...
分类:
编程语言 时间:
2014-06-10 15:23:19
阅读次数:
234
链表的分类:
单链表:
双链表:
每一个节点有两个指针域
循环链表:
能通过任何一个节点找到其它所有的结点
非循环链表:
算法:
遍历
查找
清空
销毁
求长度
排序
删除节点
插入节点
下面举个例子
例1:
{CSDN:C...
分类:
其他好文 时间:
2014-06-10 06:58:23
阅读次数:
244
下面是参考《数据结构域算法分析》书上部分代码,结合自己理解写出的快速排序代码...
分类:
其他好文 时间:
2014-06-08 17:29:48
阅读次数:
190
树的遍历
在学习完成树的基本结构以后,我们开始研究一些树的应用模式。访问树的全部节点,一般有三种模式,这些模式的不同之处,仅在于访问节点的顺序不同。我们把这种对节点的访问称为“遍历”,这三种遍历模式叫做前序、中序和后序。下面我们对遍历模式作更仔细的定义,同时研究使用这延续模式的例子。
前序遍历...
分类:
编程语言 时间:
2014-06-08 05:49:56
阅读次数:
323
声明和初始化变量
Javascript变量默认是全局作用域的.严格来说,使用之前是不需要定义的.
当一个javascript变量在没有被声明之前直接进行初始化,它就是一个全局变量.在这本书中,我们沿用编译语言如c++和java的编程约定.在使用变量之前都进行声明.
这还有一个附带的好处,声明的变量可以作为本地变量.
我们将会在本章节的后面讨论更多关于变量的作用域.
声明ja...
分类:
编程语言 时间:
2014-06-08 04:54:06
阅读次数:
219
变量作用域
变量作用域就是指在一个程序中,变量的值在哪里可以被获取到.javascript函数作用域被定义为函数作用域,这意味着变量的值在定义和声明该变量的函数,包括任何在该函数的嵌套函数里是可见的.
当一个变量定义在函数的外面,在主程序中,该变量将会拥有全局作用域.这就意味着它的值可以被程序的任何地方,包括函数获取.
下面的小程序演示全局变量时如何工作的.
funct...
分类:
编程语言 时间:
2014-06-08 03:23:45
阅读次数:
303