09 2018 档案

摘要:插入类排序: 将无序子序列中的一个或几个记录“插入”到有序序列中,从而增加记录的有序子序列的长度。 一趟直接插入排序的基本思想: 不同的具体实现方法导致不同的算法描述,以下描述三种插入排序算法:直接插入排序(基于顺序查找)、折半插入排序(基于折半查找)和希尔排序(基于逐趟缩小增量)。 1. 直接插入 阅读全文
posted @ 2018-09-27 22:13 dedication 阅读(1999) 评论(0) 推荐(0) 编辑
摘要:冒泡排序 1. 思想 冒泡排序(Bubble Sort)是一种交换排序,基本思路是:两两比较相邻记录的关键字,如果反序则交换,直到没有反序的记录为止。 2. 实现 2.1 初学常用的一种 public static <T extends Comparable<? super T>> void Bub 阅读全文
posted @ 2018-09-27 21:33 dedication 阅读(1436) 评论(0) 推荐(0) 编辑
摘要:1. 什么是排序 排序就是将一组“无序”的记录序列调整为“有序”的记录序列。其定义如下: 假设含有n个记录的序列为{r1, r2, …, rn},其相应的关键字分别为{k1, k2, …, kn},需确定1, 2, …, n的一种排列p1, p2, …, pn,使其相应的关键字满足kp1 ≤ kp2 阅读全文
posted @ 2018-09-27 21:01 dedication 阅读(345) 评论(0) 推荐(0) 编辑
摘要:目标 1) 使用下列方法将一个数组按升序排序:归并排序、快速排序和基数排序 2) 评估排序的效率,讨论不同的方法的相对效率 目录 9.1 归并排序 9.1.1 归并数组 9.1.2 递归归并排序 9.1.3 归并排序的效率 9.1.4 迭代归并排序 9.1.5 Java类库中的归并排序 9.2 快速 阅读全文
posted @ 2018-09-21 14:14 dedication 阅读(3142) 评论(0) 推荐(0) 编辑
摘要:目标 1) 使用下列方法将一个数组按升序排序:选择排序、插入排序和希尔排序 2) 使用插入排序将链式节点链按升序排序 3) 评估排序的效率,讨论不同方法的相对效率 目录 8.1 对数组进行排序的Java方法的组织 8.2 选择排序 8.2.1 迭代选择排序 8.2.2 递归选择排序 8.2.3 选择 阅读全文
posted @ 2018-09-19 22:28 dedication 阅读(295) 评论(0) 推荐(0) 编辑
摘要:目标 1) 判定所给出的递归方法是否能在有限时间内顺利结束 2) 写一个递归方法 3) 评估递归方法的时间复杂度 4) 识别尾递归并能用迭代来替代它 迭代:for、while等循环。包含想要重复执行的语句及控制重复次数的机制。 缺点:有时会非常复杂,找到或验证这样的方案很困难。 ↓ 递归:替代复杂的 阅读全文
posted @ 2018-09-19 22:08 dedication 阅读(339) 评论(0) 推荐(0) 编辑
摘要:目标 使用链表、数组或向量实现ADT栈 对不同的实现方式及其性能进行对比 6.1 链式实现 ADT栈中每个操作push、pop、peek都会涉及栈顶,使用链式,将头结点指向的第一个元素作为栈顶,链的最后一个元素作为栈底。 类的框架 有一个数据域topNode,为节点链的头引用,构造时默认为null, 阅读全文
posted @ 2018-09-13 20:10 dedication 阅读(413) 评论(0) 推荐(0) 编辑
摘要:目标 1) 描述ADT栈的操作 2) 使用栈来判定代数表达式中分隔符是否正确配对 3) 使用栈将中缀表达式转变为后缀表达式 4) 使用栈计算后缀表达式的值 5) 使用栈计算中缀表达式的值 6) 使用程序中的栈 7) 描述Java运行时环境如何使用栈来跟踪方法的执行过程 5.1 ADT栈的规格说明 栈 阅读全文
posted @ 2018-09-12 22:46 dedication 阅读(932) 评论(0) 推荐(0) 编辑
摘要:要讨论的类:先UML定义需要的方法 > ADT伪代码,确认操作和设计 > 考虑特殊情况 > 实现为Java接口(注意写好注释) > 写好用来测试的Java语句,更好的理解定义的方法 > 实现核心方法 > 测试核心方法 > 实现其他方法及测试。 分析ArrayBagDemo: /** * A demo 阅读全文
posted @ 2018-09-11 21:12 dedication 阅读(2676) 评论(0) 推荐(0) 编辑
摘要:1 < log(log n) < log n < log2 n < n < n log n < n2 < n3 < 2n < n! 4. 最优、最差和平均:最优情况下仍然很慢,说明需要更换算法;最差情形下可以接受,说明算法就是可以接受的。但是最优和最差在实际中很少出现,所以需要考虑算法的平均情形(不 阅读全文
posted @ 2018-09-11 12:40 dedication 阅读(246) 评论(0) 推荐(0) 编辑
摘要:目标: 1) 描述数据的链式组织方式 2) 描述如何在链式节点链的开头添加新节点 3) 描述如何删除链式节点链的首节点 4) 描述如何在链式节点链中找到某个数据 5) 使用链式节点链实现ADT包 6) 描述基于数组实现和链式实现的ADT包的不同 3. 使用链式数据实现包 3.1链式数据 添加到开头形 阅读全文
posted @ 2018-09-11 09:30 dedication 阅读(347) 评论(0) 推荐(0) 编辑
摘要:目录 1.使用固定大小的数组实现ADT bag 包 1.1 一组核心方法 1.2 实现核心方法 1.3 让实现安全 1.4 测试核心方法 1.5 实现更多的方法 1.6 删除项的方法 1.7 测试 1.8 发现总结 2.使用可变大小的数组实现ADT包 2.1 可变大小数组 2.2 包的新实现 2.3 阅读全文
posted @ 2018-09-10 11:05 dedication 阅读(1099) 评论(0) 推荐(0) 编辑
摘要:《数据结构与抽象——Java语言描述》第一章学习笔记 感想:以前学数据结构关注于方法及实现,为了完成作业和手写代码,没有从设计层面考虑过,第一章设计一个bag ADT,借助于Java interface实现ADT的规范说明,然后在实现之前通过Java语句来确认或者修改方法的设计决策及相关文档,且这些 阅读全文
posted @ 2018-09-08 12:01 dedication 阅读(1928) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示