数据结构与算法导论之基本概念和术语介绍

为了与大家取得“共同的语言”,下面对一些概念和术语赋予确定的含义。

1、数据(data):对客观事物的符号表示,在计算科学中指所有能输入到计算机中并被计算机程序处理的符号总称。

2、数据元素(data element):是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。一个数据元素可以由若干个数据项(data item)组成,数据项是数据不可分割的最小单位。

3、数据对象(data object):性质相同的数据元素的组合,是数据的一个子集。

总结而言,数据、数据对象、数据元素和数据项之间的关系可以总结为:数据项是数据不可分割的最小单位,若干个数据项可以组成一个数据元素,性质相同的数据元素是数据对象,而数据对象是数据的一个子集。

4、数据结构(data structure):是相互之间存在一种或多种特定关系的数据元素的集合。这种数据元素相互之间的关系称为结构(structure)。根据数据元素之间的不同特性,通常有下列4类基本结构:

(1)、集合:结构中的数据元素之间除了“同属于一个集合”的关系外,别无其他关系;

(2)、线性结构:结构中的数据元素之间存在一对一的关系;

(3)、树形结构:结构中的数据元素之间存在一对多的关系;

(4)、图状结构或网状结构:结构中的数据元素之间存在多对多的关系;

讨论数据结构的目的是为了在计算机中实现对它的操作,因此还需研究如何在计算机中的表示。

5、数据结构在计算机中的表示或映像成为数据的物理结构,又称存储结构。它包括数据元素的表示和关系的表示。

在计算机中表示信息的最小单位是二进制的一位(bit)。我们可以用一个由若干位组合起来形成的一个位串表示一个数据元素,称为这个位串为元素(element)或结点(node)。当数据元素由若干数据项组成时,位串中对应于各个数据项的子位串称为数据域(data field)。因此,元素或结点可以看成是数据元素在计算机中的映射。

6、数据元素之间的关系在计算机中的有两种不同的表示方法:顺序映射非顺序映射,并由此得到两种不同的存储结构:顺序存储结构链式存储结构

顺序映射的特点:借助元素在存储器中的相应位置表示数据元素之间的逻辑关系。

非顺序映射的特点:借助指示元素存储地址的指针(pointer)表示数据元素之间的逻辑关系。

总而言之,数据的逻辑结构和物理结构是密切相关的两个方面:任何一个算法的设计取决于选定的数据(逻辑)结构,而算法的实现依赖于采用的存储结构。

7、数据类型(data type):是一个值的集合和定义在这个值集上的一组操作的总称。

抽象数据类型(abstract data type,ADT):指一个数学模型以及定义在该模型上的一组操作。

8、算法(algorithm):是对特定问题求解步骤的一种描述,它是指令的有限序列,其中每一条指令表示一个或多个操作。

一个算法还具有下列5个重要特性:

(1)、有穷性:一个算法必须总是在执行有穷步骤之后结束,且每一步都可在有穷时间内完成;

(2)、确定性:算法中的每一条指令必须有确切的含义,并且在任何条件下,算法只有唯一的一条执行路径,即对于相同的输入只能得到相同的输出;

(3)、可行性:算法中描述的操作都是可以通过已经实现的基本运算执行有限次实现的;

(4)、输入:一个算法有0个或多个输入,这些输入取自于某个特定对象的集合;

(5)、输出:一个算法有一个或多个输出,这些输出是同输入某些特定关系的量。

算法设计的要求:正确性、可读性、健壮性、效率与低存储量需求;

算法效率的度量:时间复杂度和空间复杂度。

时间: 2024-10-01 09:28:27

数据结构与算法导论之基本概念和术语介绍的相关文章

java数据结构与算法之树基本概念及二叉树(BinaryTree)的设计与实现

[版权申明]未经博主同意,不允许转载!(请尊重原创,博主保留追究权) http://blog.csdn.net/javazejian/article/details/53727333 出自[zejian的博客] 关联文章: java数据结构与算法之顺序表与链表设计与实现分析 java数据结构与算法之双链表设计与实现 java数据结构与算法之改良顺序表与双链表类似ArrayList和LinkedList(带Iterator迭代器与fast-fail机制) java数据结构与算法之栈(Stack)设

基本数据结构(1)——算法导论(11)

1. 引言     从这篇博客开始,来介绍一些基本的数据结构知识.本篇及下一篇会介绍几种基本的数据结构:栈.队列.链表和有根树.此外还会介绍由数组构造对象和指针的方法.     这一篇主要介绍栈和队列,它们都是动态集合.     从数据的逻辑结构上讲,在它们上进行delete操作所移除的元素是固定的:在栈(stack)中,被删除的是最近插入的元素(后进先出,LIFO,last-in,first-out):而在队列(queue)中,被删除的元素是最先插入的元素(先进先出,FIFO,first-in

数据结构与算法概述(基本概念)

什么是数据结构:数据 + 关系 关系可分为:集合,线性结构,树结构,图结构或网状结构. 存储结构:顺序存储,链式存储,索引存储,散列存储. 数据类型:原子类型,结构类型 1.算法的时间复杂度 2.算法的空间复杂度 2.1 算法本身占用的空间 2.2 算法的运行时占用的空间 2.3 算法运行时临时占用的空间

数据结构与算法之线性表

前言 上一篇<数据结构和算法之时间复杂度和空间复杂度>中介绍了时间复杂度的概念和常见的时间复杂度,并分别举例子进行了一一说明.这一篇主要介绍线性表. 线性表属于数据结构中逻辑结构中的线性结构.回忆一下,数据结构分为物理结构和逻辑结构,逻辑结构分为线性结构.几何结构.树形结构和图形结构四大结构.其中,线性表就属于线性结构.剩余的三大逻辑结构今后会一一介绍. 线性表 基本概念 线性表(List):由零个或多个数据元素组成的有限序列. 注意: 1.线性表是一个序列. 2.0个元素构成的线性表是空表.

算法导论 学习资源

学习的过程会遇到些问题,发现了一些比较好的资源,每章都会看下别人写的总结,自己太懒了,先记录下别人写的吧,呵呵. 1  Tanky Woo的,每次差不多都看他的 <算法导论>学习总结 - 1.前言 <算法导论>学习总结 - 2.第一章 && 第二章 && 第三章 <算法导论>学习总结 - 3.第四章 && 第五章 <算法导论>学习总结 - 4.第六章(1) 堆排序 <算法导论>学习总结 - 5.第六

java数据结构与算法之平衡二叉树(AVL树)的设计与实现

[版权申明]未经博主同意,不允许转载!(请尊重原创,博主保留追究权) http://blog.csdn.net/javazejian/article/details/53892797 出自[zejian的博客] 关联文章: java数据结构与算法之顺序表与链表设计与实现分析 java数据结构与算法之双链表设计与实现 java数据结构与算法之改良顺序表与双链表类似ArrayList和LinkedList(带Iterator迭代器与fast-fail机制) java数据结构与算法之栈(Stack)设

Python 常用查找数据结构及算法

一.基本概念 二.无序表查找 三.有序表查找 3.1 二分查找(Binary Search) 3.2 插值查找 3.3 斐波那契查找 四.线性索引查找 4.1 稠密索引 4.2 分块索引 4.3 倒排索引 五.二叉排序树 六. 平衡二叉树 七.多路查找树(B树) 7.1 2-3树 7.2 2-3-4树 7.3 B树 7.4 B+树 八.散列表(哈希表) 8.1 散列函数的构造方法 8.2 处理散列冲突 8.3 散列表查找实现 8.4 散列表查找性能分析 参考书目<大话数据结构> 一.基本概念

数据结构和算法(What Why How)

数据结构和算法是什么? 从广义上讲,数据结构就是指一组数据的存储结构.算法就是操作数据的一组方法. 从狭义上讲,是指某些著名的数据结构和算法,比如队列.堆.栈.二分查找.动态规划等. 数据结构和算法有什么关系? 数据结构和算法是相辅相成的.数据结构是为算法服务的,算法要作用在特定的数据结构之上.因此,我们无法孤立数据结构来讲算法,也无法孤立算法来讲数据结构. 为什么要学数据结构和算法? 如果不学数据结构和算法: 难以通过大公司的面试 编写的代码运行效率低下,占用存储空间大 写出来的框架Bug多.

我的软考之路(七)——数据结构与算法(5)之查找

上篇博文我重点介绍了八大内部排序,这篇博文(数据结构与算法的最后一课)重点介绍查找,我们依旧沿用上篇博文的风格,先简单介绍,再以例子重点讲解. 下面我们开始今天的旅行,首先祝你旅行愉快,呵呵. 静态查找 若查找目的是为了查询某个特定的数据是否在表中或检索某个特定数据的各种属性,则此类查找表为静态查找表. 1.顺序查找 基本原理:从表一端开始逐个和关键字进行比较,若找到一个记录和给定值相等,则查找成功,反之失败.再简单点就是,一个一个的比大小,看看是否相等. 例子: 顺序查找更适合于顺序存储结构和