20182314《程序设计与设计结构》 第七周学习总结

20182314《程序设计与设计结构》 第七周学习总结

教材学习内容总结

第十二章:算法分析:

1、算法:

算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。

2、算法分析:

(1)算法效率:
算法效率是指算法执行的时间,算法执行时间需通过依据该算法编制的程序在计算机上运行时所消耗的时间来度量。

(2)增长函数:
就是一个表示问题大小与 所用的时间(时间复杂度)或空间(空间复杂度)之间的关系。

(3)复杂度计算过程:

1 、算出每一行语句执行的次数

2、 求和,推导出一个n的表达式T(n)

3 、找出同数量级的表示式(n的最高次方)

4 、T(n)/同数量级–>常数,那么同数量级就是此算法的时间复杂度

第十四章:栈

1、线性集合:线性结构是一个有序数据元素的集合。。

2、非线性集合:存在顺序并列的情况。

3、栈是一种线性集合,元素后进先出,元素从顶部压入栈中。

4、栈有push,pop,peek,isempty,size等操作

5、使用泛型的好处:

(1).可以统一数据类型,便于操作。

(2).将运行时的异常提前到了编译时,提高了效率。

(3).避免了强制类型转换。

(4).实现代码的模板化,把数据类型当作参数传递,提高了可重用性。

6、后缀表达式:

先初始化一个栈,这个栈是用来存放运算对象的,然后定义一个变量存放最后的结果。遍历到数字则依次进栈,遍历到运算符的时候将栈顶运算符弹出(假设赋给变量a),再将此时的栈顶运算符弹出(假设赋给变量b),用后者对前者做该运算符对应的运算(假设遍历当前的运算符为+,则做计算b+a),然后将计算结果入栈。以此方式遍历整个字符串,最终的结果即为运算结果。

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

  • 问题1:队列的五种基本操作是什么?

  • 问题1解决方案:

  • 问题2:泛型到底什么
  • 问题2解决办法:查看这个网址泛型,得知泛型是程序设计语言的一种特性。允许程序员在强类型程序设计语言中编写代码时定义一些可变部分,那些部分在使用前必须作出指明。各种程序设计语言和其编译器、运行环境对泛型的支持均不一样。将类型参数化以达到代码复用提高软件开发工作效率的一种数据类型。泛型类是引用类型,是堆对象,主要是引入了类型参数这个概念。让我大概理解了这个问题。

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

  • 问题1:
    链表中两个位置的元素交换数值时,想不出如何交换

  • 问题1解决方案:我一开始的思路集中在交换地址上,但后来发现难度属实有点大,后来询问胡泊同学后茅塞顿开,可以不交换地址,只交换数值。我觉得这个问题主要是我忘了大一的c语言的知识同时也是上课没认真听讲。

package com.company;
import org.w3c.dom.Node;
public class paixu{
    node point,point2,tem;
    int i,temp,j,max;
    public paixu(node head){
        for(point=head;point!=null;point=point.next){
            max=point.data;
            for(point2=point;point2!=null;point2=point2.next){
                if(point2.data>max){
                    max=point2.data;
                    temp=point.data;
                    point.data=point2.data;
                    point2.data=temp;
                }
         }
        }
        
    }
}
  • 问题2:toString方法的实现

  • 问题2解决方案:

数组:从头部整形变量开始输出至尾部整形变量。

链表:从链表的头部开始往尾部进行不断输出。

代码托管






上周考试错题总结

本周无错题

结对及互评

点评:

代码练习较多,问题较为深邃(至少我看不懂)

基于评分标准我给本博客打分:16分。得分情况如下:

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

2.模板中的要素齐全(加1分)

3.教材学习中的问题和解决过程(加3分)

4.代码调试中的问题和解决过程(加4分)

5.其他加分(加7分)

6.进度条中记录学习时间与改进情况(1)

7.感想,体会不假大空(1)

8.有动手写新代码(1)

9.排版精美(1)

10.错题学习深入(1)

11.点评认真,能指出博客和代码中的问题(1)

12.结对学习情况真实可信(1)

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

最近java水平感觉有所提升,但还是不太想写书上的代码。最近又要学安卓了,安卓确实有点难,一开始都没找到敲代码的位置,确实有点心态爆炸,希望能在跟上的同时尽量往前面撵一撵。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 10000行 30篇 400小时
第7周 1581/4373 2/2 20/20

参考资料

猜你喜欢

转载自www.cnblogs.com/juminghan/p/11789174.html