数据结构课程的起源
1968年高德纳教授开创了数据结构这门学科,同年,数据结构作为计算机科学的学位课程。
数据结构研究什么
研究非数值计算类型的程序问题;
研究数据之间的组织和操作方式;
研究数据的逻辑结构和存储结构;
为什么要学习数据结构
学习C语言或者C++只是学了一个语法,就像武侠片里面学武功不仅要学心法还要学招式,这个心法就对应语法,这个招式就要通过学习数据结构来提高。数据结构可以培养专业的程序设计思维,提高使用程序语言描述解决方案的能力。
数据结构与算法的关系
数据结构是研究数据之间的关系,解决实际问题的还是算法。
算法是在一定的数据结构基础上来完成的,数据结构与算法是相互交融的。
不下降序列问题
由n个数组成的数列,分别是:a[1]、a[2] 、a[3] ...... a[n],
若存在i1 则称为长度为m的不下降序列。 例如:3,18,7,14,10,12,23,41,16, 24 则:3,18,23,24是一个长度为4的不下降序列; 3、 7、 10 、12、 16、 24是一个当度为6 的不下降序列; 求:如何求最长不下降序列?如何求所有不下降序列? 学习数据结构需要具备的三大技术点: C++面向对象技术 C++模板技术 C++异常处理技术 为什么有各种各样的程序存在,程序的本质是什么? 程序 = 数据结构 + 算法 程序是为了解决实际问题而存在的没从本质上而言,程序是解决问题的步骤的描述。 比如:怎样把大象放到冰箱里? 步骤: 1、打开冰箱门; 2、把大象放进去; 3、关上冰箱门。 对应的程序 如何解决问题 首先确认问题的类型; 然后确认解决步骤; 解决问题的步骤也是有好差的区分的。 比如:求1到n之间的数累加和的三种算法 程序实例1: 显然3种方法都可以得出正确的结果,但是显然第三种方法的效率是最高的。好在哪里? 评价好程序的标准 用尽量少的时间解决问题; 用尽量少的步骤解决问题; 用尽量少的内存解决问题; NASA用64K内存的代码就能实现探索外太空。 数据的概念 数据是程序的操作对象,用于描述客观事物,数据可以输入到计算机,可以被计算机程序处理。 数据元素:组成数据的基本单位 数据项:一个数据元素由若干数据项组成 数据对象:性质相同的数据元素的集合 数据结构就是指数据对象中数据元素之间的关系。比如数组中,各元素之间存在固定的线性关系。 典型的数据结构 逻辑结构: 集合结构:数据元素之间没有特定的关系,仅同属相同集合; 线性关系:数据元素之间时一对一的关系; 树形关系:数据元素之间存在一对多的层次关系; 图形关系:数据元素之间时多对多的关系。 物理结构: 顺序存储结构:将数据存储在地址连续的存储单元中; 链式存储结构:将数据存储在任意的存储单元中,通过保存地址的方式找到相关联的数据元素。 算法是程序的灵魂 算法的特性: 算法有输入: 算法有输出: 算法的有穷性:算法在有限的步骤会结束,不会无限循环 算法的确定性:算法的每一步都有确定的含义 算法的可行性:算法的每一步都是可行的 如何评价算法的好坏 如果两个算法都能满足功能性需求,在工程中怎么评判,怎么选择? 性价比是工程上最关注的。 事后统计法:比较不同算法对同一组输入数据的运行处理时间。 事前分析估算: 依据统计的方法对算法效率进行评估。 如何学习数据结构 1、从概念上形象的理解数据元素之间的关系 2、思考数据关系能解决什么问题; 3、思考基于这种关系能够产生哪些算法; 4、理解并熟悉最终的算法; 5、选择一种熟悉的语言编码实战。
苏宁API接口解析,实现按关键字搜索suning商品
相机类型的分辨率长宽、靶面尺寸大小、像元大小汇总
华清远见11.17
SMBGhost漏洞技术分析与防御方案
关于VB.NET中修改图片DPI的原码
11设计模式-结构型模式-外观模式
动态规划 - 字符串分割(Word Break) + 三角矩阵(Triangle)
Spring Security-全面详解(学习总结---从入门到深化)
CSS处理器-Less/Scss