20182304 《数据结构与面向对象程序设计》第七八周学习总结

20182304 《数据结构与面向对象程序设计》第七八周学习总结

教材学习内容总结

  • 时间复杂度分析:时间复杂度越低,程序运行效率越高。时间复杂度又称为算法的阶,符号计为O(),它由增长函数的主项决定。可以通过数学方法求出增长函数从而确定程序的时间复杂度
  • 线性集合:集合中的元素按直线方式组织。如:队列集合、栈集合
  • 栈是一种线性数据结构,采用后进先出(Last in,first out)的方法处理元素,我们学习使用了数组和链表来实现栈
  • 链表:链表是链式结构的一种。在链表中,对象引用变量也可称为指针,链表中存储的对象泛称为结点
    • 对象引用变量保存的是对象的地址,所以链表的头很重要,必须使用一个单独的引用变量指向表的第一个节点
    • 链表终止于其next引用为空的结点
    • 访问元素的唯一方法是从第一个元素开始,遍历整个链表直至找到所需元素
    • 插入结点:插入结点需要先设置一个临时的结点用来防止指针丢失,改变引用顺序是其关键
    • 删除节点:只需被删节点的前一个结点指向后一个节点就可以了 ,删除第一个节点需要特殊处理,或增加哨兵节点
    • 哨兵节点:简化判定边界条件,提高程序效率,减少出错概率
  • 队列:先进先出(First In First Out),第一个进入的元素也将是第一个退出的元素,概念比较容易理解。
    • 队头(front或head):取出数据元素的一端。
    • 队尾(rear或tail):插入数据元素的一端。
    • 可以使用循环数组来实现队列,减少空间浪费

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

  • 问题1:在实现栈的过程中,我们使用了泛型T,泛型的概念和作用是什么呢?
  • 问题1解决方案:泛型是一种可以存储、操作和管理在实例化之前没有指定类型的对象的一个类,通常用作为标识符。泛型不能被实例化,它只是一个占位符,允许我们去定义管理特定类型的对象的类。
    泛型和Object类比较起来有很大不同,Object是一个可以实例化的变量,要进行强制转换才能赋给别的数据类型变量。而泛型T从一开始就被限定了。在之前的安卓作业中,我设置的泛型在比较时不能强制转化,最后只能改变成固定类型int
  • 问题2:比较链表和数组之间的效率差异
  • 问题2解决方案:数组可以直接访问或修改某一点的值,链表必须从头开始,顺藤摸瓜,一个一个遍历才能找到我们要查找或修改的元素。但如果删除一个元素,链表只要被删节点的前一个结点指向后一个节点就可以,而数组删除一个元素后,其他后面的每一个元素要移动一位到前面来补充那个空缺的位置,此时效率比较低

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

  • 问题1:编写中缀表达式转换为后缀表达式时没有思路
  • 问题1解决方案:首先我们要回顾后缀表达式的意义。如果不考虑括号的问题。将操作数直接输出,将符号入栈,等到遇到其他符号或到达末尾是出栈,最后用字符串连接起来,程序是不难编写的
  • 问题2:XXXXXX
  • 问题2解决方案:XXXXXX
  • ...

代码托管

上周考试错题总结

结对及互评

评分标准

  1. 正确使用Markdown语法(加1分):

    • 不使用Markdown不加分
    • 有语法错误的不加分(链接打不开,表格不对,列表不正确...)
    • 排版混乱的不加分
  2. 模板中的要素齐全(加1分)
    • 缺少“教材学习中的问题和解决过程”的不加分
    • 缺少“代码调试中的问题和解决过程”的不加分
    • 代码托管不能打开的不加分
    • 缺少“结对及互评”的不能打开的不加分
    • 缺少“上周考试错题总结”的不能加分
    • 缺少“进度条”的不能加分
    • 缺少“参考资料”的不能加分
  3. 教材学习中的问题和解决过程, 一个问题加1分
  4. 代码调试中的问题和解决过程, 一个问题加1分
  5. 本周有效代码超过300分行的(加2分)
    • 一周提交次数少于20次的不加分
  6. 其他加分:
    • 周五前发博客的加1分
    • 感想,体会不假大空的加1分
    • 排版精美的加一分
    • 进度条中记录学习时间与改进情况的加1分
    • 有动手写新代码的加1分
    • 课后选择题有验证的加1分
    • 代码Commit Message规范的加1分
    • 错题学习深入的加1分
    • 点评认真,能指出博客和代码中的问题的加1分
    • 结对学习情况真实可信的加1分
  7. 扣分:
    • 有抄袭的扣至0分
    • 代码作弊的扣至0分
    • 迟交作业的扣至0分

点评模板:

  • 博客中值得学习的或问题:

    • xxx
    • xxx
    • ...
  • 代码中值得学习的或问题:
    • xxx
    • xxx
    • ...
  • 基于评分标准,我给本博客打分:XX分。得分情况如下:xxx
  • 参考示例

点评过的同学博客和代码

  • 本周结对学习情况

    • 结对同学学号1
    • 结对照片
    • 结对学习内容
      • XXXX
      • XXXX
      • ...
  • 上周博客互评情况
    • 20182302

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

xxx
xxx

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第五周 1600/2900 2/11 20/110
第六周 981 /3881 2/12 25/135
第八周 1700/5518 3/15 45/180
第四周 300/1300 2/9 30/90

尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。

参考:软件工程软件的估计为什么这么难软件工程 估计方法

  • 计划学习时间:XX小时
  • 实际学习时间:XX小时
  • 改进情况:

(有空多看看现代软件工程 课件
软件工程师能力自我评价表
)

参考资料

原文地址:https://www.cnblogs.com/acgacg/p/11785580.html

时间: 2024-08-13 10:40:12

20182304 《数据结构与面向对象程序设计》第七八周学习总结的相关文章

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

20182333 2019-2020-1 <数据结构与面向对象程序设计>第八周学习总结 教材学习内容总结 查找 1.查找:是一个过程,即在某个项目组中寻找某一项指定目标元素,或者确定该指定目标并不存在. 2.静态方法:也称为类方法,可以通过类名来调用,无需实例化该类的对象. 在方法声明中,通过使用static修饰符就可以把他声明为静态的. 3.泛型方法:要创建一个泛型方法,只需要在方法头的返回类型前插入一个泛型声明即可,其格式是:修饰符 返回类型 方法名(形参列表) { 方法体 }.例如: p

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

目录 20182306 2019-2020-1 <数据结构与面向对象程序设计>第八周学习总结 教材学习内容总结 教材学习中的问题和解决过程 代码调试中的问题和解决过程 代码托管 上周考试错题总结 结对及互评 评分标准 点评模板: 点评过的同学博客和代码 其他(感悟.思考等,可选) 学习进度条 参考资料 20182306 2019-2020-1 <数据结构与面向对象程序设计>第八周学习总结 教材学习内容总结 查找 线性查找即按顺序从前向后一个一个进行查找,但是为了提高代码运行效率,可

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

20182332 2019-2020-1 <数据结构与面向对象程序设计>第八周学习总结 教材学习内容总结 查找: 顺序查找: 顺序查找就是按顺序从头到尾依次往下查找,找到数据,则提前结束查找,找不到便一直查找下去,直到数据最后一位.适用于线性表的顺序存储结构和链式存储结构. 缺点:查找效率低. 二分查找: 将数列按有序化(递增或递减)排列,查找过程中采用跳跃式方式查找,即先以有序数列的中点位置为比较对象,如果要找的元素值小于该中点元素,则将待查序列缩小为左半部分,否则为右半部分.通过一次比较,

《数据结构与面向对象程序设计》第78周学习总结

学号20182329 2019-2020-1 <数据结构与面向对象程序设计>第6周学习总结 教材学习内容总结 学习Android 应用程序的基本构成. 下载Android Studio,用安卓打开项目,更改支持的库. 理解活动的程序,明白清单.活动.java文件之间的关系. 学习按钮的使用方法,以及按钮连接文件的方法,调节按钮的方法. UI组件的,UI工具的使用. Toast消息的编辑.发送. 安卓布局的调整,Linear.Reiativel.Frame.Table.Grid 监听器的编辑.

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

目录 教材学习内容总结 教材第13章 教材学习中的问题和解决过程 代码调试中的问题和解决过程 代码托管 结对及互评 点评过的同学博客和代码 感悟 学习进度条 参考链接 正文 20182311 2019-2020-1 <数据结构与面向对象程序设计>第8周学习总结 教材学习内容总结 教材第13章 查找 线性查找:改进方法:设立哨兵,即将数组下标为0的内容设定为需要查找的数字,这样可以减少每次循环都对下标与最大值的比较,优化算法. 折半查找:时间复杂度为O(log2n),效率高,但只能用于有序线性存

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

目录 2019-2020-26 <数据结构与面向对象程序设计>第8周学习总结 教材学习内容总结 教材学习中的问题和解决过程 代码调试中的问题和解决过程 代码托管week13 上周考试错题总结 结对及互评 点评: 点评过的同学博客和代码 其他(感悟) 学习进度条 参考资料 2019-2020-26 <数据结构与面向对象程序设计>第8周学习总结 教材学习内容总结 链表 可用对象引用变量来创建链式结构 链表由对象组成,其中每个对象指向表中的下一个对象 链表根据需要动态变大,本质上没有容量

20182308 华罗晗 2019-2020-1 《数据结构与面向对象程序设计》第10周学习总结

20182308 2019-2020-1 <数据结构与面向对象程序设计>第10周学习总结 教材学习内容总结 有关于图的课堂内容: 邻接矩阵.邻接表,图的数组表示法.一个字符串上的数组就可实现数组.需要掌握. 我们简单提到了其他以下几种图:边集数组.无向图邻接表.逆邻接表.十字链表.邻接多重表(比较复杂,老师也没有讲) 图的遍历以及编码实现主要包括以下两大块的内容:前序中序后序的实现:广度优先搜索.深度优先搜索两种搜索方式的实现. 教材学习中的问题和解决过程 问题1:图和树有什么区别?我们说的完

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

学号20182317 2019-2020-1 <数据结构与面向对象程序设计>第十周学习总结 教材学习内容总结 三种常用的查找算法(顺序查查找,折半查找,二叉排序树查找) 图 基本概念: 1.顶点(vertex) 表示某个事物或对象.由于图的术语没有标准化,因此,称顶点为点.节点.结点.端点等都是可以的. 2.边(edge) 通俗点理解就是两个点相连组合成一条边,表示事物与事物之间的关系.需要注意的是边表示的是顶点之间的逻辑关系,粗细长短都无所谓的.包括上面的顶点也一样,表示逻辑事物或对象,画的

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

目录 教材学习内容总结 教材第12章 教材第14章 教材第15章 教材学习中的问题和解决过程 代码调试中的问题和解决过程 代码托管 2 结对及互评 点评过的同学博客和代码 感悟 学习进度条 参考资料 正文 20182311 2019-2020-1 <数据结构与面向对象程序设计>第7周学习总结 教材学习内容总结 教材第12章 算法效率可以用问题大小(n)和及处理步骤来定义.增长函数表示问题大小与希望优化的值之间的关系,该函数表示算法的时间或空间利用率. 我们更关心算法的渐进复杂度,用来表示增长函

学号 2019-2020-20182318 《数据结构与面向对象程序设计》第7周学习总结

学号 2019-2020-20182318 <数据结构与面向对象程序设计>第7周学习总结 教材学习内容总结 十二章在讲编程中的时间复杂度的概念,时间复杂度越低,程序运行效率越高.时间复杂度的计算可通过寻找运行次数最多的程序,计算他的运行次数,取n的最高次方的极数,即为程序的时间复杂度. 栈可以理解为一类数据的集合,栈中的元素可以写入,也可以读出.元素存在先后次序.先入栈的先被读出.栈可用数组,链表两种形式实现.应注意使用数组的实现链表时要注意数组大小,在push过程中可添加扩大数组大小的程序.