一起学习,一起进步。
2014-09-20 14:40
190 查看
v 数据结构学习分享:
l 第一章 绪论
用计算机求解任何问题都离不开程序设计,程序设计的实质是数据表示(数据要能被计算机处理,首先必须能够存储在计算机的内存中,这项任务称为数据表示,其核心是数据结构)和数据处理(一个实际问题的求解必须满足各项处理要求,这项任务称为数据处理,其核心是算法)。数据结构课程主要讨论数据表示和数据处理的基本方法。
v 1.1 数据结构在程序设计中的作用
(1)程序设计的一般过程:
1、分析问题,抽象出具体的数据模型(待处理的数据以及数据之间的关系,即数据结构),形成问题求解的基本思路。
2、数据表示和数据处理(具体的操作步骤,将问题求解的基本思路形成算法)。
3、用程序语言编写程序(将算法的操作步骤转换为程序设计语言)。
附:图灵奖获得者沃思的公式:数据结构+算法=程序。
1.2 本书讨论的主要内容
(1)计算机能够求解的问题
1、数值问题 (数值问题抽象出来的数据模型通常是数学方程);
2、非数值问题 (非数值问题抽象出的数据模型通常是线性表,树,图等数据结构)。
(2)非数值问题的数据组织和处理
1、数据的逻辑结构:线性表,树,图等数据结构,其核心是如何组织待处理的数据以及数据之间的关系。
2、数据的存储结构:如何将线性表,树,图等数据结构存储到计算机的存储器中,其核心是如何有效的存储数据以及数据之间的逻辑关系。
1) 3、算法:如何基于数据的某种存储结构实现插入,删除,查找等基本操作,其核心是如何有效的处理数据。
4、常用数据处理技术:包括查找技术,排序技术,索引技术等。
1.3 数据结构的基本概念
1.3.1 数据结构
(1)数据是信息的载体;数据分为数值型数据(整数和实数等)和非数值型数据(文字、声音、图形、图像)。
(2)数据元素是数据的基本单位。
(3)数据项:构成数据元素的不可分割的最小单位。
(4)数据结构是指相互之间存在一定关系的数据元素的集合。
(5)数据的逻辑结构是指数据元素之间逻辑关系的整体。
(6)数据结构的类型:
①集合:数据元素之间就是“属于一个集合”,除此之外,没有任何关系。
②线性结构:数据元素之间存在着一对一的线性关系。
③树结构:数据元素之间存在着一对多的层次关系。
④图结构:数据元素之间存在着多对多的任意关系。
树结构和图结构也称为非线性结构。
(7)数据的逻辑结构常用逻辑关系图来描述,其描述方法是:将每一个数据元素看做一个结点,用圆圈表示,元素之间的逻辑关系用结点之间的连线表示,如果强调关系的方向性,则用带箭头的连线表示关系。数据的存储结构又称物理结构,是数据及其逻辑结构在计算机中的表示。
(8)数据的存储结构:
1、顺序存储结构的基本思想是:用一组连续的存储单元依次存储数据元素,数据元素之间的逻辑关系由元素的存储位置来表示。
2、连接存储结构的基本思想是:用一组任意的存储单元存储数据元素,数据元素之间的逻辑关系用指针来表示。
(9)数据的逻辑结构是从具体问题抽象出来的数据模型,是面向问题的,反映了数据元素之间的关联方式和邻接关系。数据的存储结构是面向计算机的,其基本目标是将数据及其逻辑关系存储到计算机的内存中。
1.3.2 抽象数据类型
(1)数据类型是一组值的集合以及定义于这个值集上的一组操作的总称。
(2)抽象:抽出问题的本质特征而忽略非本质的细节,是对具体事物的一个概括。
(3)抽象数据类型是一个数据结构以及定义在该结构上的一组操作的总称。
1.4 算法及算法分析
(1)算法是对特定问题求解步骤的一种描述,是指令的有限序列。
(2)算法必须满足的五个重要特性:
输入:一个算法有零个或多个输入,这些输入通常取自于某个特定的对象集合;输出:一个算法有一个或多个输出,通常输出与输入之间有着某种特定的关系;有穷性:一个算法必须总是(对任何合法的输入)在执行有穷步之后结束,且每一步都在有穷时间内完成;确定性:算法中的每一条指令都必须有确切的含义,不存在二义性。并且,在任何条件下,对于相同的输入只能得到相同的输出;可行性:算法描述的操作可以通过已经实现的基本操作执行有限次来实现。
(3)“好”算法的特性“:正确性,鲁棒性(也称健壮性),简单性,抽象分级,高效性。
(4)算法的描述方法
①自然语言 ②流程图 ③程序设计语言 ④伪代码
1.4.2 算法分析
(1 )度量算法效率的方法
①事后统计:先将算法实现,然后输入适当的数据运行,测算其时间和空间开销;其 缺点如下:编写程序实现算法将花费较多的时间和精力;所得实验结果依赖于计算机的软硬件等环境因素,有时容易掩盖算法本身的优劣。
②事前分析:渐进复杂度,它是对算法所消耗资源的一种估算方法。
(2)算法的时间复杂度
1、问题规模:是指输入量的多少,一般来说,它可以从问题描述中得到。
2、基本语句:执行次数与整个算法的执行次数成正比的语句。它是对算法运行时间的贡献最大,是算法中最重要的操作。
(3)最好、最坏和平均情况
需要时间和假设是等概率分布。
(4)算法的空间复杂度
在算法的值行过程中,需要的辅助空间数量。
(5)算法分析举例
算法的复杂度包括时间和空间,注重的是时间性能。分析算法的时间复杂度的基本方法:找出执行语句次数最多的语句为基本语句。
注:米勒原则、欧几米算法、沃思、
学习难点:1、抽象数据类型的理解和运用
2、伪代码的理解和使用
3、逻辑结构和存出结构,二者之间的关系。
2014、09、17
理工学院计科一班祖培顺供稿
l 第一章 绪论
用计算机求解任何问题都离不开程序设计,程序设计的实质是数据表示(数据要能被计算机处理,首先必须能够存储在计算机的内存中,这项任务称为数据表示,其核心是数据结构)和数据处理(一个实际问题的求解必须满足各项处理要求,这项任务称为数据处理,其核心是算法)。数据结构课程主要讨论数据表示和数据处理的基本方法。
v 1.1 数据结构在程序设计中的作用
(1)程序设计的一般过程:
1、分析问题,抽象出具体的数据模型(待处理的数据以及数据之间的关系,即数据结构),形成问题求解的基本思路。
2、数据表示和数据处理(具体的操作步骤,将问题求解的基本思路形成算法)。
3、用程序语言编写程序(将算法的操作步骤转换为程序设计语言)。
附:图灵奖获得者沃思的公式:数据结构+算法=程序。
1.2 本书讨论的主要内容
(1)计算机能够求解的问题
1、数值问题 (数值问题抽象出来的数据模型通常是数学方程);
2、非数值问题 (非数值问题抽象出的数据模型通常是线性表,树,图等数据结构)。
(2)非数值问题的数据组织和处理
1、数据的逻辑结构:线性表,树,图等数据结构,其核心是如何组织待处理的数据以及数据之间的关系。
2、数据的存储结构:如何将线性表,树,图等数据结构存储到计算机的存储器中,其核心是如何有效的存储数据以及数据之间的逻辑关系。
1) 3、算法:如何基于数据的某种存储结构实现插入,删除,查找等基本操作,其核心是如何有效的处理数据。
4、常用数据处理技术:包括查找技术,排序技术,索引技术等。
1.3 数据结构的基本概念
1.3.1 数据结构
(1)数据是信息的载体;数据分为数值型数据(整数和实数等)和非数值型数据(文字、声音、图形、图像)。
(2)数据元素是数据的基本单位。
(3)数据项:构成数据元素的不可分割的最小单位。
(4)数据结构是指相互之间存在一定关系的数据元素的集合。
(5)数据的逻辑结构是指数据元素之间逻辑关系的整体。
(6)数据结构的类型:
①集合:数据元素之间就是“属于一个集合”,除此之外,没有任何关系。
②线性结构:数据元素之间存在着一对一的线性关系。
③树结构:数据元素之间存在着一对多的层次关系。
④图结构:数据元素之间存在着多对多的任意关系。
树结构和图结构也称为非线性结构。
(7)数据的逻辑结构常用逻辑关系图来描述,其描述方法是:将每一个数据元素看做一个结点,用圆圈表示,元素之间的逻辑关系用结点之间的连线表示,如果强调关系的方向性,则用带箭头的连线表示关系。数据的存储结构又称物理结构,是数据及其逻辑结构在计算机中的表示。
(8)数据的存储结构:
1、顺序存储结构的基本思想是:用一组连续的存储单元依次存储数据元素,数据元素之间的逻辑关系由元素的存储位置来表示。
2、连接存储结构的基本思想是:用一组任意的存储单元存储数据元素,数据元素之间的逻辑关系用指针来表示。
(9)数据的逻辑结构是从具体问题抽象出来的数据模型,是面向问题的,反映了数据元素之间的关联方式和邻接关系。数据的存储结构是面向计算机的,其基本目标是将数据及其逻辑关系存储到计算机的内存中。
1.3.2 抽象数据类型
(1)数据类型是一组值的集合以及定义于这个值集上的一组操作的总称。
(2)抽象:抽出问题的本质特征而忽略非本质的细节,是对具体事物的一个概括。
(3)抽象数据类型是一个数据结构以及定义在该结构上的一组操作的总称。
1.4 算法及算法分析
(1)算法是对特定问题求解步骤的一种描述,是指令的有限序列。
(2)算法必须满足的五个重要特性:
输入:一个算法有零个或多个输入,这些输入通常取自于某个特定的对象集合;输出:一个算法有一个或多个输出,通常输出与输入之间有着某种特定的关系;有穷性:一个算法必须总是(对任何合法的输入)在执行有穷步之后结束,且每一步都在有穷时间内完成;确定性:算法中的每一条指令都必须有确切的含义,不存在二义性。并且,在任何条件下,对于相同的输入只能得到相同的输出;可行性:算法描述的操作可以通过已经实现的基本操作执行有限次来实现。
(3)“好”算法的特性“:正确性,鲁棒性(也称健壮性),简单性,抽象分级,高效性。
(4)算法的描述方法
①自然语言 ②流程图 ③程序设计语言 ④伪代码
1.4.2 算法分析
(1 )度量算法效率的方法
①事后统计:先将算法实现,然后输入适当的数据运行,测算其时间和空间开销;其 缺点如下:编写程序实现算法将花费较多的时间和精力;所得实验结果依赖于计算机的软硬件等环境因素,有时容易掩盖算法本身的优劣。
②事前分析:渐进复杂度,它是对算法所消耗资源的一种估算方法。
(2)算法的时间复杂度
1、问题规模:是指输入量的多少,一般来说,它可以从问题描述中得到。
2、基本语句:执行次数与整个算法的执行次数成正比的语句。它是对算法运行时间的贡献最大,是算法中最重要的操作。
(3)最好、最坏和平均情况
需要时间和假设是等概率分布。
(4)算法的空间复杂度
在算法的值行过程中,需要的辅助空间数量。
(5)算法分析举例
算法的复杂度包括时间和空间,注重的是时间性能。分析算法的时间复杂度的基本方法:找出执行语句次数最多的语句为基本语句。
注:米勒原则、欧几米算法、沃思、
学习难点:1、抽象数据类型的理解和运用
2、伪代码的理解和使用
3、逻辑结构和存出结构,二者之间的关系。
2014、09、17
理工学院计科一班祖培顺供稿
相关文章推荐
- 共同学习一起进步
- 写一个爬虫程序 - 运维进行时 - 热衷于开源技术,一起学习,共同进步。
- Java Web联盟交流QQ群:70918142;共同学习,一起进步!!!
- 个人github地址,望共同学习,一起进步
- 分享下今天的学习成果,新手,嘿嘿一起进步一起加油
- open own world 一起学习一起进步,事业和生活都很重要
- 一起学习 一起进步
- 一起学习,一起进步
- < welcome > 一起学习,进步,分享。
- 邀Python一起学习共同进步
- 一起学习,共同进步(CrystalReport)--01
- 与afreez一起学习DirectFB之:如何高效的运行DirectFB程序,即Directfbrc文件介绍
- 博客园调查,关注商业智能,学习数据仓库,希望一起学习MDX的园友请支持!
- 一起学习.NET开源项目
- 与afreez一起学习DirectFB之:编译运行第一个DirectFB程序
- 与afreez一起学习DirectFB之:framebuffer相关基础
- 大家好,希望在这里能和大家共同学习,共同进步,谢谢!
- 与afreez一起学习DirectFB之:编译运行第一个DirectFB程序
- 我们一起学习 sqlite 的应用
- 未来美好憧憬:计算机之路漫漫兮,悠悠载,希望到研究生的时候能够组成一个大家自己的团队,一起学习,开发,研究...