20182319 2019-2020-1 《数据结构与面向对象程序设计》第七周学习总结
目录
教材学习内容总结
从第七周开始,我们慢慢地接触到了数据结构以及一些算法的思想。
- 首先,我们了解了一些关于复杂度的问题,复杂度一共分为两种,一种为时间复杂度一种为空间复杂度,在一般情况下,我们遇到的问题,通常不需要用到特别大的数据结构,所以我们一般关注于时间复杂度,用的较为广泛的计法为O()(大O记法)。我们很容易知道,当一个变量趋近于无穷大时,常数级别对它的影响是十分小的,同样,低次对于高次来说也是一个小数。所以我们在分析复杂度时一般关注到的是它的最高次,所以我们对于时间复杂度也主要是以循环的层数和遍历的范围为标准。
- 然后,我们了解的是关于栈、队列、链表、线性表等结构的一些基本知识以及一些实现方法,其中,主要学习的是队列与栈,这是两种比较重要也比较常用的结构,我们在进行许多优化的时候都是可以用上它们的。栈是一种先进后出的结构类型,在生活史们可以看到许多类似的例子,比如我们乘坐电梯,对于同一楼层,一般也是后上来的站得比较靠外的先下,而先上来的要等后上来的下去后再下,也可以拿在箱子里放东西当例子,后放的总是放在上面,我们在查找最小覆盖数区间时可以用到。而队列则是一种比较符合中国传统观念的先上先下的原则,可以比作我们日常生活中的排队,它的名字本来也就叫做队列。同时,它们也都是可以用数组或者链表实现的。
教材学习中的问题和解决过程
- 问题1:如果是用数组实现的栈或队列,它们的长度不就是限定死了吗?
- 问题1解决方案:其实并不是,虽然好像它们存放的上限被限制了,但是它们的长度并不是数组的长度来决定的,而是以它们本身自带的一个count来决定的,count是可变的,它们的长度就不是固定的。其次,数组并不是一个限制它们长度的条件,我们可以在中间添加异常,来防止它越界,同时我们也可以在快满的时候新开一个数组,这样就没有不需要担心了。
- 问题2:我们在研究队列在数组中的存放时,我们想到了把它的front和rear分开以确定空与非空的方法,那么我们应该如何来把区分空和满呢?
- 问题2解决方案:首先,我们要关注到的是空与满的上一个状态是不一们的,于是我们就可以用上一个状态来描述,我们在实现的时候可以把上一个时间的状态以某个变量记录下来,然后在下一个状态的判定时用上。还有一种方法就是我故意少存一个,这是一种令人脑洞大开的新思路,我们很少会想到这样做,但也确实可行,也权标轮转时间方便,我们少存一个,就可以让它以front的前一个是否是rear来判断是否是满的。
代码调试中的问题和解决过程
- 问题1:我在对按钮进行排版的过程中偶尔会有它们老是不听使唤地跑到一个角落的情况
- 解决方法:我们可以知道的是,对于这种排版,我们一般分为相对位置和绝对位置的情况,我们一般使用的是相对位置,所以我们在使用的过程中就应该定义好它们对于某些东西的相对位置,比如一个文本框对于某个按钮或者是边界的距离,只有这样,机器才好安排它们的位置。当然,如果你懒的话也可以直接用“魔法棒”,直接点一下就可以了。
这个是使用前的场景,有一个红色的!同时它的周围是没有连边的。
所以它飘了
当点击1号位的“魔法棒”后,它的边上多了几个箭头,它的!不红了,它也稳了。
- 问题2:我想用跟快速输入一样的技巧实现把一个string类的数据变成一个个int型的方便存储,但总是运行到一半就直接弹出来了。
- 问题2的解决方法:其实应该关注到的是我圈红的那个部分,如果没有的话就会产生错误然后直接弹出来,为什么呢,很简单(
就是想秃了头)它下面的时候会有一个i++是没有考虑到下一位是否还有的,所以当i太大时,charAt(i)是没有东西的,然后就越界了。所以我们加一个小尾巴,让它自己到了就不再加就好了,当然,你也可以在那个i++后面加一个特判,这也是没有问题的。
代码托管
结对及互评
评分:10
评价
- 博客中值得学习的或问题:
我认为他这一次的问题以及解决还不够详细,让人看后有些一头雾水,可以试着贴一点图片,使问题让人看得更明显,但也有做得不错的地方,他的学习计划写得比较完善,同时他对于学习内容的提要也可以做到比较好,比较适合一般人复习的时候看,可以一目了然自己学过些什么,然后可能哪方面忘了可以及时补上
点评过的同学博客和代码
- 本周结对学习情况
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | |
---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 |
第一周 | 62/62 | 1/1 | 30/30 |
第二周 | 188/250 | 4/5 | 17/47 |
第三周 | 619/869 | 1/6 | 18/65 |
第四周 | 386/386 | 2/8 | 20/82 |
第五周 | 909/1295 | 0/8 | 18/100 |
第六周 | 1470/2765 | 1/9 | 25/125 |
第七、八周 | 1437/4202 | 3/12 | 33/158 |