zoukankan      html  css  js  c++  java
  • 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比较。

    作业总结

    • 1、
    • 2、用递归方法实现二分查找

    上周考试错题总结

    • 错题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/200 2/2 20/20
    第二周 300/500 2/4 18/38
    第三周 500/1000 3/7 22/60

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

    参考资料

  • 相关阅读:
    haproxy 看到的是https,后台是http的原因
    frontend http 前端名字定义问题
    frontend http 前端名字定义问题
    Git学习总结(3)——代码托管平台简介
    Git学习总结(3)——代码托管平台简介
    Git学习总结(3)——代码托管平台简介
    [置顶] 开源史上最成功的8个开源产品
    [置顶] 开源史上最成功的8个开源产品
    [置顶] 开源史上最成功的8个开源产品
    Maven学习总结(十一)——Maven项目对象模型pom.xml文件详解
  • 原文地址:https://www.cnblogs.com/20162327WJH/p/7587238.html
Copyright © 2011-2022 走看看