20162327 《程序设计与数据结构》第三周学习总结

20162327 2017-2018-1 《程序设计与数据结构》第三周学习总结

教材学习内容总结

  • 1、Comparable接口允许多态实现算法,而不是应用于特定的类
  • 2、二分查找利用了查找池有序这个特点
  • 3、二分查找的每次比较都排除了一半的可行候选数据
  • 4、选择排序算法反复将一个个具体的数据反到他最终的位置,从而完成一组值的排序
  • 5、插入排序是反复的将一个个具体的数据插入到表的已有的子表中,完成排序
  • 6、快速排序算法反复地比较相邻的两个元素,如果必要就交换他们的次序,从而完成一组数字的排序
  • 7、归并的排序算法递归的将表平分成两部分,直到每个子表中只含有一个元素,然后将这些子表归并为有序段,从而完成一组值的排序
  • 8、选择排序、插入排序、冒泡排序的平均运行时间复杂度是O(n2)
  • 9、快速查找的关键是选择一个好的划分元素
  • 10、归并排序的最坏运行时间复杂度是O(nlogn)

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

(一个模板:我看了这一段文字 (引用文字),有这个问题 (提出问题)。 我查了资料,有这些说法(引用说法),根据我的实践,我得到这些经验(描述自己的经验)。 但是我还是不太懂,我的困惑是(说明困惑)。【或者】我反对作者的观点(提出作者的观点,自己的观点,以及理由)。 )

  • 问题1:对于归并排序的理解
  • 问题1解决方案:归并排序是将递归思想表现得最明显的一种排序方法。
  • 问题2:Comparable接口的有关问题
  • 问题2解决方案:public interface Comparable此接口强行对实现它的每个类的对象进行整体排序。这种排序被称为类的自然排序,类的 compareTo 方法被称为它的自然比较方法。实现此接口的对象列表(和数组)可以通过 Collections.sort(和 Arrays.sort)进行自动排序。实现此接口的对象可以用作有序映射中的键或有序集合中的元素,无需指定比较器。对于类 C 的每一个 e1 和 e2 来说,当且仅当 e1.compareTo(e2) == 0 与 e1.equals(e2) 具有相同的 boolean 值时,类 C 的自然排序才叫做与 equals 一致。注意,null 不是任何类的实例,即使 e.equals(null) 返回 false,e.compareTo(null) 也将抛出 NullPointerException。
  • 问题3:ComparaTo的用法
  • 问题3解决方法:compareTo()是Comparable接口中的方法,
    compareTo()就是比较两个值,如果前者大于后者,返回1,等于返回0,小于返回-1,int型可以直接比较,可以不用compareTo比较,如果声明的是Date、String、Integer或者其他的,可以直接使用compareTo比较。
    1065480-20170924224056775-1225179314.png

作业总结

  • 1、1065480-20170925090527792-714635049.png
  • 2、用递归方法实现二分查找
  • 1065480-20170925144647073-598516175.png

上周考试错题总结

  • 错题1:有以下用Java语言描述的算法,说明其功能并计算复杂度,
double fun(double y,double x,int n)
{
 y=x;
while (n>1)
{ 
y=y*x;
n--;
}
return y;
}

复杂度为O(n),实际是为了计算x的n次方

  • 错题2:设 n 为正整数, 给出下列算法关于问题规模 n 的时间复杂度。
void fun3(int n)
{ int i=0,s=0;
while (s<=n)
{ i++;
s=s+i;
}
}

解析:由s = 1+2+3+...+n<=n得n(n+1)/2<=n,约去影响较小的n/2得T2(n)<=n,则T(n)<=√n.所以该算法复杂度为O(√n)

结对及互评

  • 本周我们互相讨论了学习的经验,共同的结论:勤奋、善思

本周结对学习情况

20162328

其他(感悟、思考等,可选)

  • 结束了好多繁忙的与学习无关的琐碎杂事之后,终于又可以恢复平静的学习生活了,但是我突然发现自己已经落下了好多,话不多说,滚去学习!

学习进度条

代码行数(新增/累积)博客量(新增/累积)学习时间(新增/累积)重要成长
目标5000行30篇400小时
第一周200/2002/220/20
第二周300/5002/418/38
第三周500/10003/722/60

参考:软件工程软件的估计为什么这么难软件工程 估计方法
(有空多看看现代软件工程 课件
软件工程师能力自我评价表
)

参考资料

转载于:https://www.cnblogs.com/20162327WJH/p/7587238.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值