数据结构与算法.ppt

  1. 1、本文档共46页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

;;2、算法的基本要素

数据对象的运算和操作

A.算术运算(+、-、*、/)

B.逻辑运算(、||、!)

C.关系运算(、、=、#)

D.数据传输(赋值、输入、输出)

算法的控制结构

一个算法一般都可以用顺序、选择、循环三种基本控制结构组合而成。;3、算法设计基本方法

列举法:指针对待解决的问题,列举所有可能的情况,并用问题中给定的条件来检验。

归纳法:特殊——一般的抽象过程

递推:从已知初始条件出发,逐次推出所要求的各中间结构和最后结果

递归:将复杂的问题逐层分解,最后归结为一个简单的问题,再沿原分解的逆过程逐步进行综合。分为直接递归和间接递归

减半递推技术:把规模较大较复杂的问题,分成几个规模较小较简单的问题

回溯法:通过对问题的分析,找出一个解决问题的线索,多次试探,若成功,则得出解,若失败,则回退,换别的路线再进行试探;1.1.2算法复杂度;2、算法的空间复杂度

指执行这个算法所需要的内存空间,包含:

算法程序所占的空间

输入的初始数据所占的空间

算法执行过程中所需要的额外空间;1.2数据结构的基本概念;1.2.1数据结构的定义

数据处理:是指对数据集合中的各元素以各种形式进行运算。包括插入、删除、查找、更改等运算,也包括对数据元素进行分析。

数据元素:在数据处理领域中,每一个需要处理的对象都可以抽象为数据元素。

数据结构:是指反映数据元素之间关系的数据元素集合的表示。数据元素之间的任何关系都可以用前后件关系来描述。

;1、数据的逻辑结构

所谓逻辑结构实际上就是指数据元素之间的前后件关系。其中前后件关系是指它们的逻辑关系,而与他们在计算机中的存储位置无关。它包含两个要素:

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

数据元素之间的关系(前后件关系),通常记为R。

形式表示如下:

B=(D,R)其中B表示数据结构

;2、数据的存储结构

数据的逻辑结构在计算机存储空间中的存放形式称为数据的存储结构(即数据的物理结构)。

常用的存储结构有顺序、链接、索引等存储结构。

;1.2.2数据结构的图???表示

图形表示方法:对于数据集合D中的每一个数据元素用中间标有元素值的方框表示,一般称为数据结点,简称结点,对关系R中每一个二元组,用一条有向线段从前件指向后件结点,以表示数据之间的前后件关系。

;例1.2用图形表示数据结构B=(D,R),其中:

D={di|1=i=6}={d1,d2,d3,d4,d5,d6}

R={(d1,d2),(d1,d3),(d3,d4),(d5,d4),(d5,d6)};1.2.3线性结构与非线性结构

如果一个数据结构中一个数据元素都没有,则称为数据结构为空的数据结构。在一个空的数据结构中插入一个元素后就变成了非空。

根据数据结构中各数据元素之间前后件关系的复杂程度,一般将数据结构分为两大类:

线性结构(又称为线性表)

非线性结构

线性结构满足如下两个条件:

(1)、有且只有一个根结点;

(2)、每一个结点最多有一个前件,也最对多有一个后件。

在一个线性结构中插入或删除任何一个结点还是线性结构

常见的线性结构:线性表、栈、队列、线性链表

常见的非线性结构:树、二叉树、图;1.3线性表及其顺序存储结构;1.3.2线性表的顺序存储结构

线性表的顺序存储结构有以下两个基本特点:

(1)线性表中所有元素所占的存储空间是连续的;

(2)线性表中各数据元素在存储空间中是按逻辑顺序依

次存放的。

逻辑上相邻的结点,物理位置上也相邻

在程序设计语言中,通常定义一个一维数组来表示线性表的顺序存储空间,该一维数组的长度通常要定义得比线性表的实际长度大一些,以便对线性表进行各种运算,特别是插入运算。

线性表的主要操作有:

(1)插入、(2)删除、(3)查找、(4)排序、(5)分解、(6)合并、(7)复制、(8)逆转。;元素an;1.4栈和队列;2、栈的顺序存储及其运算

在程序设计语言中,一般用一维数组S(1:m)作为栈的顺序存储空间,其中m为栈的最大容量。

在S(1:m)中,S(bottom)通常为栈底元素(在栈非空的情况下),S(top)为栈顶元素。top=0表示栈空;top=m表示栈满。

栈的基本运算有3种:

入栈运算

退栈运算

读栈顶元素;1.4.2队列及其基本运算

1、队列(queue)的定义

队列是允许在一端(队尾rear)进行插

文档评论(0)

智乾 + 关注
实名认证
内容提供者

科技工作者

1亿VIP精品文档

相关文档