20182305 2019-2020-1 《数据结构与面向对象程序设计》第八周学习总结

20182305 2019-2020-1 《数据结构与面向对象程序设计》第八周学习总结

教材学习内容总结

这一周的学习内容为教材第十三章,包括查找和排序两部分。

  • 查找:包括线性查找,折半查找等。

    • 线性查找即按顺序从前向后一个一个进行查找,但是为了提高代码运行效率,可以在第一个位置设置哨兵,从后向前查找。如果查找到的位置是在哨兵位置,则说明未找到这一目标。
    • 折半查找需要先将查找序列进行顺序排列(一般是从小到大),然后将中间位置的元素与目标比较大小,如果中间元素小于目标元素则说明可能在中间元素的左边,反之在右边。折半查找充分来利用查找序列有序这一特性来提高效率。
  • 排序:包括选择排序、冒泡排序、插入排序、快速排序。
    • 排序是按照某种标准将一串数据按要求重新排列。
    • 选择排序是反复将具体的值放到它最终应该去的有序位置。
    • 插入排序是将具体的值按要求插入到已有顺序的列表的具体位置。
    • 冒泡排序是反复比较相邻元素,判断是否满足要求,如果有需要就将他们交换位置。
    • 快速排序利用了递归算法,第一遍将整个序列分为两个部分,以中间轴为分界线,左边小于中枢,右边大于中枢。再分别进行排序。

教材学习中的问题和解决过程

  • 问题一:线性查找时设置哨兵在数组第一位有什么意义。

       通过设置哨兵,可以使查找过程获得一个一定可以找到的结果,此时只需要判断找到元素的位置是不是在哨兵位置,就可以判断原来序列中究竟是否含有这个元素。而这一过程可以使循环减少一个判断语句,循环次数多了以后就可以显著提高效率
  • 问题二:排序算法的稳定性究竟有什么意义。

     其实有很多算法现在看着没什么不同,但是当放在大数据云计算的条件下它的稳定性非常重要。举个例子来说,对淘宝网的商品进行排序,按照销量,价格等条件进行排序,它的数据服务器中的数据非常多,因此,当时用一个稳定性效果不好的排序算法,如堆排序、shell排序,当遇到最坏情形,会使得排序的效果非常差,严重影响服务器的性能,影响到用户的体验。
  • 问题三:对于常用的排序方法,究竟哪种方法效率更高?

     1.冒泡算法效率最低。
    2.插入算法效率最高。
    3.选择算法是冒泡算法的3.3倍。
    4.插入算法是冒泡算法的4.7倍。
    5.插入算法是选择算法的1.4陪。

代码调试中的问题和解决过程

  • 问题一:==,equals和compareTo的区别?

    ==:一般比较两个变量的值,返回true和false,比较对象的地址,不比较对象的内容,
    equals:比较两个对象的内容,一般用于比较字符串。
    compareTo:在API中,java.lang包下面的基本数据类型(Integer,Float,Byte,Short,Character 等)的封装类都实现了对应的compareTo方法。例如对应Interger实现了数值大小判断;对应String按照字典排序实现字符串的判断,返回的是字符串长度差或者是字符间在码表上的差距。compareTo返回int值,大于返回大于0的整数,等于返回0,小于返回小于0的整数。

代码托管

## 结对学习同学博客(20182327)

  • 博客中值得学习的或问题:
    • 分点分章节总结学习内容,全面、真实的写出了自己这周的学习情况。
    • 添加了图片和代码片段,很好的记录了学习过程中出现的问题,记录了学习中的点子和想法。有助于记录自己的学习过程、代码出错的情况,便于后续学习纠错总结。也可以更好的总结这一周的学习情况。
  • 代码中值得学习的或问题:
    • 善于利用Java语言代码复用性高的特点,不需要重复敲代码,善于使用继承,使用以前瞧过的代码。
  • 基于评分标准,我给本博客打分:11分。得分情况如下:正确使用Markdown语法+1.教材学习中的问题和解决过程+2.代码调试中的问题和解决过程+3.感想,体会不假大空+1.点评认真,能指出博客和代码中的问题+1.结对学习情况真实可信+1.课后题有验证+1,进度条有记录+1.

点评过的同学博客和代码

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 6000行 30篇 400小时
第一周 200/200 2/2 17/17
第二、三周 556/756 3/5 31/48 明白了类与方法的关系,对Java编程的思想的了解有了一些进步
第四周 673/1429 2/7 12/60 对两段代码之间的关系了解了一些
第五周 1308/2737 2/9 25/85
第六周 800/3537 2/11 18/103
第七周 4195/7732 2/13 27/130
第八周 489/8221 1/14 6/136

猜你喜欢

转载自www.cnblogs.com/Java-cn/p/11790516.html