数据结构和算法的基本概念

参考:《数据结构-java语言描述》

 

相关术语:数据、数据对象、数据元素、数据项、数据结构

数据的逻辑结构

数据的物理结构

算法的五要素、时间复杂度、空间复杂度

 

运用计算机处理数据时,必须解决的四个方面的问题:

一)、如何高效的在计算机中方便、高效地表示和组织数据

二)、如何在计算机存储器(内存和外存)中存储数据

三)、如何对存储在计算机中的数据进行操作,可有哪些操作、如何实现这些操作以及对同一问题的不同操作方法进行评价

四)、必须理解每一种数据结构的性能,以便选择一个适合于某个特定问题的数据结构

 

数据即信息的载体,时对客观事务的符号表示,凡是能输入的计算机中并被计算机程序处理的符号都可以称为数据

数据元素是数据的基本单位,它在计算机处理和程序设计中通常作为独立的个体。

一个数据元素包含多个数据项,常称为记录、节点等。

数据项也称为域、字段、属性、表目、顶点。

数据对象是具有相同特征的数据元素的集合,是数据的一个子集。如一个整形数组、一个字符串数组都是一个数据对象

 

数据结构简称为DS(Data Structure),是数据和数据元素的组织形式。任何数据都不是彼此孤立的,通常把相关联的数据按照一定的逻辑关系组织起来,就形成了数据结构

数据结构包含两个方面的内容:

(一)、数据对象

(二)、数据对象中数据元素之间的内在关系

 

数据结构的四类基本形式:

(1)、集合结构:集合机构中的数据元素除了同属一个集合外,他们之间没有其他关系。

(2)、线性结构:线性结构中的数据元素是一对一的关系

(3)、树型结构:树型结构中的数据元素之间是一对多的层级关系

(4)、图形结构(网状结构):图形结构中的数据元素是多对多的关系

 

数据的逻辑结构:是从具体问题抽象出来的的数据模型,与数据在计算机中的具体存储没有关系。数据的逻辑机构独立于计算机,是数据本身所固有的特性。

逻辑结构分为线性结构非线性结构

主要包含:集合、线性、树、图形结构

集合、树、图形为非线性结构

 

数据结构的两个要素:

1、数据元素的集合,通常记为D

2、是D上的关系集,它反映了D中各个数据元素之间的前驱和后继关系。通常记为R

一个数据结构可以表示成二元数组B=(D,R)。

 

数据的物理结构(即存储结构):数据在计算机中如何表示和存储的结构

存储机构分为顺序存储链式存储

 

顺序存储的特点是存储数据的内存空间是连续的。

链式存储的特点是存储数据的内存空间是可以连续的,也可以是不连续的

 

在顺序存储的基础上可以延伸出另外的两种存储机构:索引存储和散列存储

索引存储:就是在数据文件的基础上增加了一个索引文件表。通过索引表建立索引,可以把一个顺序表分为几个顺序子表,其目的是提高查询效率

散列存储:就是通过数据元素与存储地址之间建立起某种映射关系,使每个数据元素与每一个存储地址之间尽量达到一一对应的目的

 

综上所述:数据结构主要是描述数据之间的逻辑关系、数据在计算机系统中的存储方式和数据运算三个方面的内容。即逻辑结构、存储机构和操作集合

 

数据结构和算法是程序设计的两个重要的内容

数据结构+算法=程序;

 

算法:是指在有限的时间范围内,为解决某一问题而采取的方法和步骤的准确完整的描述,它是一个有穷的规则序列。

算法具备如下五个特征:

1、有穷性:一个算法应包含有限操作步骤,即一个算法在执行若干操作步骤后应该能够结束,并且每一步都要在合理的时间内完成。

2、确定性:算法的每一步都必须有确切含义,无二义性,在任何情况下,相同的输入只能得到相同的输出

3、可行性:算法中的每一步骤都应该能够通过已经实现的基本运算的有限次执行得以实现。

4、输入:指的是算法执行时,从外界取得必要的数据,一个算法可以有一个或一个以上的输入,也可以没有输入

5、输出:是指算法对输入数据处理后的结果,一个算法可以有一个或一个以上的输出,没有输出时没有意义

综上所述:算法的步骤时有限的,每一步骤都有确切的含义,每一步骤都确实可行,可以没有输入数据,但不能没有输出

 

评价一个算法的主要标准:

1、正确性:算法的执行结果应当满足预先规定的功能和性能的要求

2、可读性:算法应当思路清晰、层次分明、简单明了、易读易懂

3、健壮性:要求要全面细致地考虑所有可能的出现的边界情况和异常情况。并对这些边界情况和异常情况做出妥善的处理,尽可能使算法没有异常情况发生.

4、运行时间:是指算法在计算机上花费的时间,等于每一条语句执行的时间

5、空间大小:是指算法在计算机上存储所占用的空间,算法占用的存储空间是指算法执过程中所需的最大存储空间

 

算法的效率分析:时间复杂度和空间复杂度

时间复杂度:

我们把规模为n的算法的执行时间,称为时间复杂度。运算所需的时间T表示为n的函数,记为T(n)

                  T(n)=O(f(n))

其中的O为Order(数量级)的第一个字母。f(n)为函数形式

当T(n)为多项式时,可只取其最高次幂,且其系数也可以省略。例如:T(n)=8n³+15n²+3n=1时

可以表示为T(n)=O(n³)

可以看出,时间复杂度不是精确的执行次数,而是估算数量级,他的体重是随着问题规模n的增大,算法执行时间的变化趋势。

 

空间复杂度:

算法整个运行过程所占用的空间称之为空间复杂度。空间复杂度是对一个算法在运行过程中临时占用存储空间大小的度量。

算法在计算机存储器内占用的存储空间主要分为三部分:

一)、算法源代码所占用的存储空间

二)、算法输入输出数据所占用的存储空间

三)、运行过程所占用的存储空间

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值