计算机科学是通过使用计算机解决各种问题的研究领域。为了使用计算机解决给出的问题,您需要为其设计算法。可设计多个算法来解决特定的问题。提供了最大效率的算法应用于解决此问题。算法的效率可通过使用合适的数据结构来改善。数据结构帮助创建简单、可重用和易于维护的程序。本模块允许学员选择并实现合适的数据结构和算法来解决特定的编程问题。解决问题时算法和数据结构的作用问题解决是每个科学规律的必要部分。计算机广泛用
分类:
编程语言 时间:
2018-11-10 12:40:31
阅读次数:
186
其实算法本身不难,第一遍可以只看伪代码和算法思路。如果想进一步理解的话,第三章那些标记法是非常重要的,就算要花费大量时间才能理解,也不要马马虎虎略过。因为以后的每一章,讲完算法就是这样的分析,精通的话,很快就读完了。你所说的证明和推导大概也都是在第三章介绍了,可以回过头再认真看几遍。 至于课后题,比 ...
分类:
编程语言 时间:
2018-11-03 23:13:37
阅读次数:
199
12.3 1 二叉搜索树insert操作的递归版本 ~~~ void insert1(Node pRoot, Node pAdd) { bool bLeft = pAdd key key; Node pNextRoot = bLeft ? pRoot left : pRoot right; if(p ...
分类:
编程语言 时间:
2018-11-02 11:53:24
阅读次数:
621
并归排序的过程就是一个先拆再合并的过程,先拆到全是不能再拆的最小数组,然后组与组之间合并,排序的过程在合并的过程中执行。 所以整个算法分两部分,split和merge 先说merge吧,将两个数组合并为新数组,符合从大到小。 邓老师的教案给出过另外一种复杂校验的版本,不过其教案上也注明了,从效率的角 ...
分类:
编程语言 时间:
2018-10-29 11:10:16
阅读次数:
130
插入排序原本的实现方式之一: 插入排序算法对应的比喻例子是打牌时抽牌的过程,如果目标的数据类型为链表的话,用插入排序会特别适合。 这边的目标数据类型是数组,并且是原地算法,更贴切的比喻是按照颜色深浅整理蜡笔盒里的蜡笔。 步骤的话,就是取出某根蜡笔,然后找到它对应的位置,然后将这个位置之后的蜡笔都滚动 ...
分类:
编程语言 时间:
2018-10-26 20:33:30
阅读次数:
184
1.2.1编写一个Point2D的用例,从命令行接受一个整数N。在单位正方形中生成N个随机点,然后计算两点之间的最近距离。解:采用分治法。参考资料《算法导论》中文版第三版。代码实现过程中不太好处理的地方是:为了在Y'数组中只检查后续7个点而又不在递归中对Y数组进行排序的部分,这就需要确保从排序好的Y ...
分类:
其他好文 时间:
2018-10-25 13:59:28
阅读次数:
187
有一个双向链表L,存储于长度为m的数组。假设m个元素中有n个元素在链表L中,m n个元素由自由表F管理。现在实现方法CompacifyList,它的功能是让链表L中元素紧凑地占据数组的前n个元素,自由表F占据数组的后m n个元素。运行时间O(n),只使用固定的额外存储空间。 这道题可以这样来思考,数 ...
分类:
编程语言 时间:
2018-10-17 00:08:20
阅读次数:
195
10.4 1 那棵树就长成下面这个样子 ~~~ / 18 12 10 7 4 2 21 5 / ~~~ 下面就借用10.4 1提供的数据,构建一棵树,然后分别对它做10.4 2所要求的递归遍历和10.4 3所要求的非递归遍历。 递归遍历的方式有三种,前序、中序、后序,实现上的差异,无非是把Trave ...
分类:
编程语言 时间:
2018-10-15 20:48:10
阅读次数:
327
让长度为m的链表的所有元素占用数组的前m个位置。 假设数组总长度为SIZE,用一个变量freeHead记录空闲表的起始下标, 则[freeHead, SIZE)的范围内的对象全部属于自由表。用一个Object对象list表示链表头。 当从链表的任意位置删除元素时,比如下标为pos的元素,那么就让下标 ...
分类:
编程语言 时间:
2018-10-13 13:51:58
阅读次数:
134
知识来源:算法导论 数据结构的扩展步骤:(在真正设计的时候,下面的步骤的顺序可以置换) 1.选择一种基础数据结构 2.确定基础数据结构中需要维护的附加信息 3.检验基础数据结构上的基本修改操作能否维护附加信息 4.设计需要的新操作 如果要插入数值3,首先要知道3应该插入的位置。使用二分查找可以最快定 ...
分类:
其他好文 时间:
2018-10-03 00:42:20
阅读次数:
251