20172304 2018-2019《java软件结构与数据结构》 第一章 第二章学习总结

20172304 2018-2019《java软件结构与数据结构》 第一章 第二章学习总结

教材学习内容总结

  • 第一章 概述

    1.1软件质量:

    高质量软件的几个特征:

    正确性:软件在多大程度上满足其特定需求

    可靠性:软件故障发生频率和危险程度

    健壮性:出错情况下可以得到恰当处理的程度

    可用性:用户学习和执行任务的难易程度

    可维护性:对软件进行修改的难易程度

    可重用性:软件组件可重用于其他软件系统开发的难易程度

    可移植性:软件组件可以在多个计算机环境下使用的难易程度

    运行效率:在不浪费资源的情况下软件完成其目标的程度

    1.2数据结构(计算机存储、组织数据的方式)

    程序=数据结构+算法

    软件=程序+软件工程

  • 第二章 算法分析

    2.1算法效率分析

    算法效率通常用CPU使用时间来表示

    算法分析是从效率的角度对算法进行分析

    算法分析是计算机科学的基础

    2.2增长函数与大O记法

    增长函数:表示问题(n)大小与我们希望最优化的值之间的关系该函数表示了该算法的时间复杂度(CPU的使用时间)和空间复杂度(内存空间)

    算法的渐进复杂度(随着n增长时增长函数的一般性质)

    主要关注函数的主项(即增长速度最快的的那一项)

    渐进复杂度称为算法的阶次

    增长函数的项之间的比较

盘子的数量 15n2 15n 15n2+45n
1 15 45 60
2 60 90 150
5 375 225 600
10 1500 450 1950
100 150 000 4500 154500
1000 15 000 000 45000 15045000
10 000 1 500 000 000 000 450 000 1 5000 450 000
100 000 150 000 000 000 4 500 000 150 004 500 000
1 000 000 15 000 000 000 000 15 000 000 15 000 045 000 000
10 000 000 1 500 000 000 000 000 450 000 000 1 500 000 450 000 000

一些增长函数及其渐进复杂度

| 增长函数|阶次|标记

|t(n)=17|O(1)| 常量型|

|t(n)=3log n|O(log n)|对数型|

|t(n)=20n-4|O(n)|线性|

|t(n)=12n log n+100n|O(n log n)|n log n|

|t(n)=3n2+5n-2|平方型|

|t(n)= 8n^3+3n2|O(n^3)|立方型|

|t(n)=2^n+18n2+3n|O(2^n)|O(2^n)|指数型|

如果两个算法完成相同任务具有不同的增长函数,比如都是O(n2),那么从运行效率上来说,两者大体上是相等的。

2.3增长函数的比较

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

  • 问题1:XXXXXX
  • 问题1解决方案:XXXXXX
  • 问题2:XXXXXX
  • 问题2解决方案:XXXXXX
  • ...

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

  • 问题1:XXXXXX
  • 问题1解决方案:XXXXXX
  • 问题2:XXXXXX
  • 问题2解决方案:XXXXXX
  • ...

代码托管

(statistics.sh脚本的运行结果截图)

上周考试错题总结

  • 错题1及原因,理解情况
  • 错题2及原因,理解情况
  • ...

点评模板:

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

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

点评过的同学博客和代码

  • 本周结对学习情况

    • 20172310
    • 结对学习内容
      • XXXX
      • XXXX
      • ...
  • 上周博客互评情况
    • 学号1
    • 学号2
    • 学号3
  • 学号4
  • ...

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

xxx

学习进度条

xx

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 075/200 1/1 05/20
第二周 560/500 1/2 13/38
第三周 972/1000 1/4 21/60
第四周 694/1666 1/5 21/90
第五周 1544/3095 1/6 30/90
第六周 600/3627 1/7 30/120

参考资料

1.

2.

3.

4.

原文地址:https://www.cnblogs.com/15248252144dzx/p/9607269.html

时间: 2024-10-17 13:24:56

20172304 2018-2019《java软件结构与数据结构》 第一章 第二章学习总结的相关文章

20172328 2018-2019《Java软件结构与数据结构》第六周学习总结

20172328 2018-2019<Java软件结构与数据结构>第六周学习总结 概述 Generalization 本周学习了第十章:非线性集合与数据结构--树.主要讨论了树的使用和实现,以及考察实现和使用树的实例. 教材学习内容总结 A summary of textbook 树(tree):树是一种非线性结构,其元素被组织成了一个层次结构.下面是树的术语,了解一下吧! 树有一个包含结点(node)和边(edge)的集构成,其中的元素被储存在这些结点中,边则将一个结点和另一个结点连接起来.

20172328 2018-2019《Java软件结构与数据结构》第七周学习总结

20172328 2018-2019<Java软件结构与数据结构>第七周学习总结 概述 Generalization 本周学习了第11章:二叉查找树.在本章中,主要探讨了二叉查找树的概念和各种二叉查找树实现,考察为二叉查找树添加和删除元素的算法以及维护平衡二叉查找树的算法 教材学习内容总结 A summary of textbook 二叉查找树(binary search tree):二叉树定义的扩展,一种带有附加属性的二叉树.附加属性是什么?树中的每个节点,其左孩子都要小于其父节点,而父节点

20172328 2018-2019《Java软件结构与数据结构》第八周学习总结

20172328 2018-2019<Java软件结构与数据结构>第八周学习总结 概述 Generalization 本周学习了二叉树的另一种有序扩展?是什么呢?你猜对了!ヾ(?°?°?)??就是堆.本章将讲解堆的链表实现and数组实现,以及往堆中添加元素或从堆中删除元素的算法:还将介绍对的一些用途,包括基本使用和优先队列. 教材学习内容总结 A summary of textbook 堆(heap)就是具有两个附加属性的一颗二叉树: 第一点:它是一颗完全二叉树 ,即叶子节点都在最后一层靠左侧

2018-2019-20172329 《Java软件结构与数据结构》第三周学习总结

2018-2019-20172329 <Java软件结构与数据结构>第三周学习总结 教材学习内容总结 <Java软件结构与数据结构>第五章-队列 一.概述 1.队列是什么? 队列是种线性集合,其元素从一端加入,从另一端删除:注:队列是按照先进先出的方式处理的.从队列中删除元素的次序,与放置元素的次序是一样的. 2.队列的构成 (1)方法: 操作 描述 enqueue 向队列末端添加一个元素 dequeue 从队列前段删除一个元素 first 考察队列前端的那个元素 isempty

2018-2019-20172329 《Java软件结构与数据结构》第五周学习总结

2018-2019-20172329 <Java软件结构与数据结构>第五周学习总结 教材学习内容总结 <Java软件结构与数据结构>第九章-排序与查找 一.查找 1.查找概念简述: (1)查找3是这样一个过程,即在某个项目组中寻找某一指定目标元素,或者确定该组中并不存在该目标元素.对其进行查找的项目组有时也称为查找组. (2)查找方式的分类:线性查找,二分查找. (3)查找所要完成的目标:尽可能高效的完成查找,从算法分析的角度而言,我们希望最小化比较操作的次数,通常,查找池里项目数

2018-2019-20172329 《Java软件结构与数据结构》第七周学习总结

2018-2019-20172329 <Java软件结构与数据结构>第七周学习总结 教材学习内容总结 <Java软件结构与数据结构>第十一章-二叉查找树 一.概述 1.什么是二叉查找树:二叉查找树是一种带有附加属性的二叉树,即对树中的每个结点,其左孩子都要小于其父结点,而父结点又小于或等于其右孩子. 2.二叉查找树的定义是二叉树定义的扩展. 3.操作: 操作 描述 addElement 往树中添加一个元素 removeElement 从书中删除一个元素素 removeAllOccu

2018-2019-20172321 《Java软件结构与数据结构》第七周学习总结

2018-2019-20172321 <Java软件结构与数据结构>第七周学习总结 教材学习内容总结 第11章 二叉查找树 一.概述 二叉查找树是一种含有附加属性的二叉树,该属性即其左孩子小于父节点,而父节点又小于等于其右孩子.如下图所示.根结点的左子树每个元素都小于80,右子树每个元素都大于80. 查找方法,要判定一个具体的目标是否存在于树中,需要沿着从根开始的路径,根据查找目标是小于还是大于当前结点的值,相应地转到当前结点的左子结点或右结点.最终或是找到目标元素,或是遇到路径的末端,后者意

2018-2019-20172329 《Java软件结构与数据结构》第八周学习总结

2018-2019-20172329 <Java软件结构与数据结构>第八周学习总结 现在对于我而言,最珍贵的是时间,感觉自己在时间飞逝的时候真的挽留不住什么,只能怒发冲冠的让自己疯狂的学习啦,新的一周要加油!?? 教材学习内容总结 <Java软件结构与数据结构>第十二章-优先队列与堆 一.概述 1.什么是堆: 堆就是具有两个附加属性的一个二叉树. 堆分为小顶堆和大顶堆. 两个附加属性如下: (1)它是一颗完全树.(完全树:如果某树是平衡的,且底层所有叶子都位于树的左边,则认为该树是

20172321 2018-2019《Java软件结构与数据结构》第三周学习总结

教材学习内容总结 第五章 5.1概述 队列是一种线性集合,其元素从一端加入,从另一端删除:队列的处理方式是先进先出(First in First out). 与栈的比较(LIFO) 栈是一端操作,先进后出 队列是两端操作,先进先出 栈的一些操作 操作 描述 enqueue 向队列末端添加一个元素 dequeue 从队列前端删除一个元素 first 考察队列前端的那个元素 isEmpty 判定队列是否为空 size 判定队列中的元素数目 toString 返回队列中的字符串表示 5.2javaAP