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

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

教材学习内容总结

第一章 概述 (基于软件质量问题引导出数据结构)

  • 高质量软件的几个特征:

  • 质量问题:
    必须优先考虑质量特征,并尽最大努力实现

  • 数据结构:计算机存储、组织数据的方式

  • 程序=数据结构+算法

  • 事实证明没有一种方案可以解决所有的问题!

第二章 算法分析(高效利用CPU和内存)

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

  • 大O记法:

  • 所有具有相同阶次的算法,从运行效率的角度来说都认为是等价的

  • 增长函数的比较

  • 如果算法的运行效率低,那么从长远来说,使用更快的处理器也无济于事

  • 时间复杂度分析:确定某个算法的阶次

教材部分习题解答过程

EX 2.1 下列增长函数的阶次是多少?

a.10n^2+100n+1000
解答:n^2

b.10·n^3-7
解答:n^3

c.2^n+100· n^3
解答:2^n

d.n^2 ·log(n)
解答:n^2 ·log(n)

EX 2.4 请确定下面代码段的增长函数和阶次

for(int count = 0 ; count < n ; count++)
    for(int count2 = 0 ; count2 < n ; count2 = count2 + 2)
        {
            System.out.println(count,count2);
        }
}  

解答:
增长函数为:F(n)=(n^2)/2

阶次为:n^2

EX 2.5 请确定下面代码段的增长函数和阶次


for(int count = 0 ; count < n ; count++)
    for(int count2 = 0 ; count2 < n ; count2 = count2 * 2)
        {
            System.out.println(count,count2);
        }
}  

解答:
增长函数:F(n)=n·log2(n)

阶次为:n·log2(n)

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

  • 问题1:堆和散列表(用于给数据集排序的常用的数据结构)是什么?
  • 问题1解决方案:(通过查询相关资料进行了解)

散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。给定表M,存在函数f(key),对任意给定的关键字值key,代入函数后若能得到包含该关键字的记录在表中的地址,则称表M为哈希(Hash)表,函数f(key)为哈希(Hash) 函数。

堆(heap)是计算机科学中一类特殊的数据结构的统称。堆通常是一个可以被看做一棵树的数组对象。

代码托管 (正在建设中)

结对及互评

  • 本周结对学习情况
    课后习题交流讨论良好!

感想

新的学期开始了,希望自己能在新的学期里多多提高!

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 0/0 1/1 4/4
  • 计划学习时间:6小时

  • 实际学习时间:4小时

  • 改进情况:继续加油吧!

参考资料

原文地址:https://www.cnblogs.com/zhaoxiaohai/p/9614057.html