《数据结构与面向对象程序设计》第9周学习总结
学号20182329 2019-2020-1 《数据结构与面向对象程序设计》第9周学习总结
教材学习内容总结
- 编写一个二叉树。
- 创建NODE的ATD结构,以及Link的ATD结构以适应树的建立。
- 学会使用树的先序遍历、中序遍历、后序遍历,来查找、后者是建立树。
- 学习决策树的的定义和实现方法,可以参照完全二叉树的建立。
- 用链定义一串字符,学会链的构成和查找
- 学习顺序查找、二分法查找、差值查找,被学会在链或者数组的情况下实现。
- 学习斐波那契数列的查找方法,也是二分查找的一种提升算法,通过运用黄金比例的概念在数列中选择查找点进行查找,提高查找效率。
- 学习二叉树的排序方法,并运用二叉树查找。
- 编写二叉树以收纳一组数据,可以运用中序遍历、前序遍历、后序遍历来进行查找。
- 简单学习二叉树方面的红黑数。
- 学习分块查找、哈希查找在链表上的实现方法。
- 学习堆的定义和结构,并完成堆的实现,学会在堆立面进行查找、添加删除等操作
教材学习中的问题和解决过程啊
-
问题1:在学习归并查找的过程中,发现在分解和归并的每一步中度需要进行一轮比较,也就是说,在一个循环中套两个循环,但是这样的运算算法就会非常复杂,而且只是设置分解在循环中可以,但是很难把合成也放在其中。
-
问题1解决方法:算法本身复杂是没有解决的方法,两个循环无法并行时,可以将归并部分的代码重新设置一个方法,需要的时候调用就可以了。
-
问题2::一开始我使用的是在类里面编写循环代码,来进行查找用while语句实现并判断,但是后来我发现自己的循环会一直走到链的最后一位,然后再弹出,根本不是我需要的查找数字。
-
问题2解决方案:后来发现我的条件语句有很多问题,一一改正后,自己有重写了一个递归调用的方法,比之前的循环方法减少了很多代码量。
-
问题3:我在编写书上SortPlayerList代码时,发现我设置一个inset(void)方法时,最后执行时结果并没有改变,date值并没有改变。
-
问题3解决方法:缺少一个方法。
代码调试中的问题和解决过程
- 问题1:在Android 上实现实验5时,发现自己不能再layout中编写的布局中调用方法Chain6_4
- 问题1解决方法:我在编写Second的时候缺少与之对应的布局。
- 问题2:在编写查找的sort方法时,我已经编写好了Searching的主要类,但是在sort的返回值上一直是报错状态。
- 问题2解决方法:在编写时sort方法中,result的值一开始是String类,后来使用循环应为int类
代码托管
作业连接
https://gitee.com/besti1823/20182329lyz.git
https://gitee.com/besti1823/20182329lyz.git
(statistics.sh脚本的运行结果截图)
上周考试错题总结
错题
- A stack is a ___________________ data structure.
A
.
LIFO
B
.
FIFO
C
.
link based
D
.
array based
E
.
none of the above
解析:堆栈是后进先出的数据结构。这意味着放在堆栈上的最后一个元素将是被删除的第一个元素。
- A queue is a ____________________ data structure.
A
.
LIFO
B
.
FIFO
C
.
link based
D
.
array based
E
.
none of the above
解析:队列是FIFO(先进先出)数据结构,这意味着放入队列的第一个元素是从队列中删除的第一个元素。
- What exception is thrown if the pop method is called on an empty stack?
A
.
EmptyStackException
B
.
NoSuchElementException
C
.
ArrayOutOfBoundsException
D
.
EmptyCollectionException
E
.
none of the above
解析:如果在空堆栈上调用pop方法,则抛出EmptyCollectionException。
- Which of the following methods removes an element from a queue?
A
.
enqueue
B
.
dequeue
C
.
first
D
.
pop
E
.
push
解析:这是我的失误,不知道咋的就选了A。dequeue方法从队列中删除一个元素。
- When one type of object contains a link to another object of the same type, the object is sometimes called __________ .
A
.
circular
B
.
recursive
C
.
self-referential
D
.
a stack
E
.
a queue
解析:自引用对象是指引用同一类型的另一个对象。
- A queue is the ideal collection to use when ____________________ .
A
.
implementing a line in a simulation
B
.
evaluating a postfix expression
C
.
evaluating an infix expression
D
.
implementing a quick sort
E
.
none of the above
解析:队列是在模拟(例如先到先得的情况)中实现行的理想对象。
- In a array-based implementation of a queue that stores the front of the queue at index 0 in the array, the dequeue operation is ___________________.
A
.
impossible to implement
B
.
has several special cases
C
.
O(n)
D
.
O(n2)
E
.
none of the above
解析:在应用了删除操作之后,需要线性时间将队列的所有元素向下移动一个索引。
- A postfix expression can be easily evaluated using a queue.
A
.
true
B
.
false
解析:可以使用堆栈轻松地表示后缀表达式。
结对及互评
评分标准
点评模板:
-
博客中值得学习的或问题:
- 本博客体现许多java连接的问题,发现了一些排序和查找的优点。
- 但是博客在课本自学方面存在一点问题,并没有将所有知识点列出,只是课本编程实列的学习问题的解决。
- 这篇博客的代码问题并没有将各种排序的方法事列出来,也没有将查找的算法列出来。
-
代码中值得学习的或问题:
- 本博客在提出代码编写错吴时,虽然解析比较完整,没有展示出比较全面的图片。
- 本博客存在设置类(抽象类)时的错误,希望改正。
-
基于评分标准,我给本博客打分:10分。得分情况如下:
-
正确排版要素齐全(+1)
-
使用makedown格式(+1)
-
教材问题(+3)
-
代码调试问题(+3)
-
错题深入(+1)
-
点评认真(+1)
点评过的同学博客和代码
- 本周结对学习情况
- 学号20182324
- 结对照片
- 结对学习内容
- 创建NODE的ATD结构,以及Link的ATD结构以适应树的建立。
- 学会使用树的先序遍历、中序遍历、后序遍历,来查找、后者是建立树。
- 学习决策树的的定义和实现方法,可以参照完全二叉树的建立。
- 用链定义一串字符,学会链的构成和查找
- 学习顺序查找、二分法查找、差值查找,被学会在链或者数组的情况下实现。
- 学习斐波那契数列的查找方法,也是二分查找的一种提升算法,通过运用黄金比例的概念在数列中选择查找点进行查找,提高查找效率。
- 学习二叉树的排序方法,并运用二叉树查找。
- 编写二叉树以收纳一组数据,可以运用中序遍历、前序遍历、后序遍历来进行查找。
- 简单学习二叉树方面的红黑数。
- 学习分块查找、哈希查找在链表上的实现方法。
其他(感悟、思考等,可选)
建立树的时候,一定要规定好他的结构,说书是一个非线性结构,其元素组织是层次结构,在进行遍历的时候,一定得注意数的左右子树的关系,以及数的构建方法。在学习斐波那契查找时,相对于折半查找,一般将待比较的key值与第mid=(low+high)/2位置的元素比较,比较结果分三种情况:
(1)相等,mid位置的元素即为所求
(2)>,low=mid+1;
(3)<,high=mid-1。
斐波那契查找与折半查找很相似,他是根据斐波那契序列的特点对有序表进行分割的。他要求开始表中记录的个数为某个斐波那契数小1,及n=F(k)-1;
参考资料
Java程序设计
Android程序设计
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 6000行 | 30篇 | 400小时 | |
第一周 | 107/107 | 2/2 | 15/15 | |
第二周 | 454/526 | 2/4 | 32/47 | |
第三周 | 988/1514 | 2/6 | 31/78 | |
第五周 | 757/2271 | 2/8 | 31/109 | |
第六周 | 875/3146 | 1/9 | 31/140 | |
第七周 | 1282/4428 | 2/11 | 58/198 | |
第八周 | 1972/6400 | 2/13 | 36/234 | |
第九周 | 3799/10199 | 3/13 | 55/289 | |
尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。 | ||||
耗时估计的公式:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。 |
-
计划学习时间:60小时
-
实际学习时间:58小时
-
改进情况:树好难啊。