学习过程主要依照中国MOOC课程,感谢MOOC,感谢浙大授课大佬。
什么是数据结构
首先,何为数据结构?官方目前没有统一的定义,但数据结构常和算法结合在一起,“精心选择的数据结构可以带来最优效率的算法”。
- 图书的摆放:解决问题方法的效率,和数据的组织方式有关。
- 循环与递归:解决问题方法的效率,和空间的利用效率有关。
- 多项式计算:解决问题方法的效率,和算法的巧妙程度有关。
所以,到底什么是数据结构?数据结构是数据在计算机中的组织方式。数据对象必定与一系列加在其上的操作相关联,这些操作就是“算法”。
- 抽象数据类型:首先,数据类型包括数据对象集和相关联的操作集,而抽象指的是只描述数据类型的方法而不涉及具体实现,也就是只描述数据集和操作集“是什么”,而不管“如何实现”。
什么是算法
- 一个有限指令集
- 有或没有输入,但必须有输出
- 每一条指令有明确目标,在计算机可处理范围之内
算法衡量指标 - 空间复杂度S(n)
- 时间复杂度T(n)
2019/3/5 10:56:00
课后编程题
最大子序列
第一题只需要给出最大子序列的和,按照授课视频讲的在线处理方法还是比较简单;第二题在此基础上还要求给出最大子序列的首尾元素,作者的想法就是继续按照刚才在线处理的思想,当ThisSum > MaxSum要更新MaxSum时,这时更新last,同时,只要ThisSum没有被重新置为0,说明当前的最大子序列仍在增长,计数的num继续++,最后last的位置减去num也就是first的位置。另外还有一些如全为负数,存在零等情况需要特殊考虑一下,具体代码如下:
1 | // MaxSubSum.cpp : 定义控制台应用程序的入口点。 |
二分查找
这道题已经给出了其他代码,只需要写一个二分查找的函数,由于函数给出的是链表,所以在写的时候绕了一些弯子,这里不表,注意学习一下链表的相关内容,具体代码如下:
1 | Position BinarySearch(List Tbl, ElementType K) { |
以上。
注:转载文章请注明出处,谢谢~