摘要: 目标 1) 使用下列方法将一个数组按升序排序:选择排序、插入排序和希尔排序 2) 使用插入排序将链式节点链按升序排序 3) 评估排序的效率,讨论不同方法的相对效率 目录 8.1 对数组进行排序的Java方法的组织 8.2 选择排序 8.2.1 迭代选择排序 8.2.2 递归选择排序 8.2.3 选择 阅读全文
posted @ 2018-09-19 22:28 dedication 阅读(310) 评论(0) 推荐(0)
摘要: 目标 1) 判定所给出的递归方法是否能在有限时间内顺利结束 2) 写一个递归方法 3) 评估递归方法的时间复杂度 4) 识别尾递归并能用迭代来替代它 迭代:for、while等循环。包含想要重复执行的语句及控制重复次数的机制。 缺点:有时会非常复杂,找到或验证这样的方案很困难。 ↓ 递归:替代复杂的 阅读全文
posted @ 2018-09-19 22:08 dedication 阅读(350) 评论(0) 推荐(0)
摘要: 目标 使用链表、数组或向量实现ADT栈 对不同的实现方式及其性能进行对比 6.1 链式实现 ADT栈中每个操作push、pop、peek都会涉及栈顶,使用链式,将头结点指向的第一个元素作为栈顶,链的最后一个元素作为栈底。 类的框架 有一个数据域topNode,为节点链的头引用,构造时默认为null, 阅读全文
posted @ 2018-09-13 20:10 dedication 阅读(423) 评论(0) 推荐(0)
摘要: 目标 1) 描述ADT栈的操作 2) 使用栈来判定代数表达式中分隔符是否正确配对 3) 使用栈将中缀表达式转变为后缀表达式 4) 使用栈计算后缀表达式的值 5) 使用栈计算中缀表达式的值 6) 使用程序中的栈 7) 描述Java运行时环境如何使用栈来跟踪方法的执行过程 5.1 ADT栈的规格说明 栈 阅读全文
posted @ 2018-09-12 22:46 dedication 阅读(957) 评论(0) 推荐(0)
摘要: 要讨论的类:先UML定义需要的方法 > ADT伪代码,确认操作和设计 > 考虑特殊情况 > 实现为Java接口(注意写好注释) > 写好用来测试的Java语句,更好的理解定义的方法 > 实现核心方法 > 测试核心方法 > 实现其他方法及测试。 分析ArrayBagDemo: /** * A demo 阅读全文
posted @ 2018-09-11 21:12 dedication 阅读(2713) 评论(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 阅读(260) 评论(0) 推荐(0)
摘要: 目标: 1) 描述数据的链式组织方式 2) 描述如何在链式节点链的开头添加新节点 3) 描述如何删除链式节点链的首节点 4) 描述如何在链式节点链中找到某个数据 5) 使用链式节点链实现ADT包 6) 描述基于数组实现和链式实现的ADT包的不同 3. 使用链式数据实现包 3.1链式数据 添加到开头形 阅读全文
posted @ 2018-09-11 09:30 dedication 阅读(357) 评论(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 阅读(1111) 评论(0) 推荐(0)
摘要: 《数据结构与抽象——Java语言描述》第一章学习笔记 感想:以前学数据结构关注于方法及实现,为了完成作业和手写代码,没有从设计层面考虑过,第一章设计一个bag ADT,借助于Java interface实现ADT的规范说明,然后在实现之前通过Java语句来确认或者修改方法的设计决策及相关文档,且这些 阅读全文
posted @ 2018-09-08 12:01 dedication 阅读(1964) 评论(0) 推荐(0)
摘要: 相同:底层均采用字符数组value来保存字符串 区别:String类的value数组有final 修饰,指向不可改,同时private 未提供修改value数组的方法。StringBuilder类的value数组没有final修饰,可以改变指向,且可以扩容,扩容通过新建字符数组完成。 首先分析Str 阅读全文
posted @ 2018-08-26 17:32 dedication 阅读(1742) 评论(0) 推荐(0)