概念整理_1

原创 2004年07月01日 19:55:00

数据结构: 数据结构是信息的组成方式。它主要用来反映一个数据的内部构成,即一个数据由哪些成分数据构成,以什么方式构成,呈什么结构。

数据结构分为逻辑上的数据结构(反映成分数据之间的逻辑关系)和物理上的数据结构(反映成分数据在计算机内部的存储安排)。

从学科角度来讲,数据结构是一门研究非数值计算的程序设计问题中计算机的操作对象以及他们之间的关系和操作的学科。它的研究内容即是三个方面:数据的逻辑结构;数据的物理存储结构;对数据的操作(即算法)。

通常算法的设计取决于数据的逻辑结构,算法的实现取决于数据的物理存储结构。良好的数据结构可以提高算法的效率,一般一种数据结构会与一组算法的集合相对应,通过这组算法集合对数据结构中的数据进行操作,称之为该数据结构的基本操作(如建立,删除数据结构等)。数据结构的研究不仅涉及计算机硬件的研究,如存储装置和存取方法,而且是解决编译原理,操作系统,数据库系统的数据元素在存储器中的分配问题的重要基础。

抽象数据类型ADT(Abstract Data Type):简称数据类型,既是一个数学模型以及定义在该模型上的一组操作,之所以称为抽象,是因为它实现了信息的隐蔽和局部化,提供一个定义的接口为在数据结构上提供一个抽象的数据实现并隐蔽处理的细节,它把数据结构及数据结构的所有基本操作看成一个整体(模块model),数据结构的逻辑结构被表示为私有成员,基本操作被表示为公共方法。因此它与物理结构无关,使软件系统建立在数据之上,类似于面向对象语言中类的概念。

数据:数据是个集合的概念,是能够被输入到计算机中并被计算机处理的客观符号的总称。数据项是数据不可分割的最小单位数据项组成数据元素数据元素是数据的基本单位,是数据中的“个体”,又称为“记录”或“表目”;相同性质的数据元素组成数据对象;而数据对象组成数据。数据结构即是一种或多种特定关系的数据元素的集合。


数据的逻辑结构:
1. 集合(sets): 数据元素之间除了同属于一个集合的关系外别无其它关系。
2. 线性(lists): 数据元素存在一对一的前趋后继关系。
特点:有且仅有一个元素无前趋元素。
有且仅有一个元素无后继元素。
其余任何一个元素均有且仅有一个前趋和一个后继元素。
3. 树(trees):数据元素存在一对多的关系。
特点:任何一个元素最多有一个前趋,零个或多个后继,是典型的非线性结构。
4. 图(graphs):数据元素存在多对多的关系。
特点:任何一个元素都可以有多个前趋或多个后继,是一种多对多的前趋后继关系。

表和树是最常用的两种高效数据结构,许多高效的算法都可以用这两种数据结构来设计实现。

表是线性结构(全序关系),数(偏序或层次关系)和图(弱序或局部有序weak/local orders)是非线性结构。

数据结构的物理结构是逻辑结构在计算机中的表示(又称存储映像image).


四种基本映射模型: 顺序(sequential),连接(linked),索引(indexed),散列(hashing)。


由于每种逻辑结构的数据都可以通过四种不同的物理结构来存储,因此数据结构便有4*4种可能。但并不是所有可能的组合都是合理的。


而任何定义在数据结构上的操作在改变数据元素(节点)或节点的域时都必须保持数据结构原来的逻辑和物理结构。

如何判断好的和坏的数据结构: 如果一个DS可以通过某种“线性规则”被转化为线性的DS(如线性表),则称其为好的DS。好的DS通常对应于好的(高效的)算法。这是由计算机的计算能力决定的,因为计算机本质上只能存取逻辑连续的内存单元,因此如果没有线性化的结构逻辑上是不可计算的。。比如对一个图进行操作,要访问图的所有节点,则必须按照某种顺序来一次访问所有节点(要形成一个偏序),必须通过某种方式将图固有的非线性结构转化为线性结构才能对图进行操作。


便是一种好的DS,它有非常简单而高效的线性化规则,因此可以利用树设计出许多非常高效的算法。树的实现和使用都很简单,但却可以解决大量特殊的复杂问题,因此树是实际编成中最重要和最有用的一种数据结构。树的结构本质上有递归的性质,即每一个叶节点可以被一棵子树所替代,反之亦然。实际上,每一种递归的结构都可以被转化为(或等价于)数形结构。


递归: 若在一个函数,过程或数据结构定义内部又直接或间接出现有定义本身的应用,则称它们是递归的,或递归定义的。

递归设计的实质: 当一个复杂的问题可以分解成若干子问题来解决时,其中某些子问题与原问题有相同的特征属性,则可利用原问题相同的分析处理方法;反之,子问题解决了,原问题也就迎刃而解了。


递归函数的设计用的是归纳思维的方法,则在设计递归函数时应该注意以下几点:
1. 首先应书写函数的首部和规格说明,严格定义函数的功能接口(递归调用的界面),对求精函数中所得的和原问题性质相同的子函数,只要接口一致,就可以进行递归调用。
2. 对函数中的每一个递归都看成只是一个简单的操作,只要接口一致,必能实现规格说明中定义的功能 ,切忌想得太深太远。

迭代: 就是高潮迭起的“迭”和变量代换的“代”。概念上,就是有某个变量,它的值被一次又一次地代换成新的数值,而每次代换之后都作同样的动作。通常程序语言提供三种迭代的语法:for循环,while循环,和do...while循环。迭代的概念首次出现在Babbage和Ada在设计机械型计算机的时候,这是写一个电脑程序最最基本,可能也是最最原始的技巧。

关于接口的一些概念性整理

1、接口(interface)   1.1:概念   首先接口不是类,而是对某个类的一组需求描述。它主要用于描述某个类应该具备什么样的功能,实现(implements)了某接口的类必须遵从接口描述...
  • Johnson9090
  • Johnson9090
  • 2016年02月13日 15:39
  • 1028

漫谈数据仓库之基本概念总结(不断更新)

0x00 前言 整理一些数据仓库中的常用概念。大部分概念不是照搬书上的准确定义,会加入很多自己的理解。 0x01 概念数据仓库(Data Warehouse) 数据仓库,英文名称为Data W...
  • zhaodedong
  • zhaodedong
  • 2017年06月17日 21:48
  • 839

数据结构与算法基本概念总结

数据结构:1数据的逻辑结构(线性结构、树形结构、图形结构)     2数据的存储结构(顺序、连接、索引、散列)     3数据的运算 算法:     是为了求解一个问题所遵循的、被清楚地指定的简单...
  • iOSTerry
  • iOSTerry
  • 2016年06月15日 00:06
  • 1413

lucene整理1 -- 概念

1.    概述Lucene是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎。Lucene以其方便使用、快速实施以及灵活性受到广泛的关注。它可以方便地嵌入到各种应用中实现针对应用的全文索引、检...
  • xiaoping8411
  • xiaoping8411
  • 2010年03月23日 22:34
  • 1184

数据结构学习整理

一、相关概念 数据结构是相互之间存在一种或多种特定关系的数据的集合。 1、抽象层-逻辑结构数据元素之间的逻辑关系称为数据的逻辑结构。数据的逻辑结构可以看作是从具体问题抽象出来的数学模型,它与数据的存储...
  • xiaoyaoyou1212
  • xiaoyaoyou1212
  • 2016年06月06日 23:25
  • 3425

数据库设计(1)_概念结构设计

一、数据模型以下概念在一些教科书中都会有讲到,比如:《数据库原理与应用》。这里作了一下总结。1.1、概念模型,是对现实世界的抽象,数据模型,就是描述数据结构(静态特征)、数据操作(动态特征)、数据完整...
  • qilixiang012
  • qilixiang012
  • 2015年05月31日 23:39
  • 1352

数据库设计基本概念及知识

数据库设计步骤 需求分析:数据是什么,有哪些属性,数据和属性的特点(存储特点),数据的生命周期 逻辑设计:使用ER图对数据库进行逻辑设计 物理设计:把逻辑设计转成物理设计 维护优化:新的需求进行建表,...
  • darron_r
  • darron_r
  • 2016年03月17日 23:53
  • 853

性能测试中的并发量概念

A朋友:公司官网改版,我要对其压测,从10000并发开始合适吗? 我:从500开始吧 A朋友:他说,这么少。。。。 相信很多人(我也如此)对并发量其实没太多概念,总觉得不上个几万...
  • duzilonglove
  • duzilonglove
  • 2017年11月23日 16:43
  • 112

C语言重要概念汇总

作者:郭孝星 微博:郭孝星的新浪微博 邮箱:allenwells@163.com 博客:http://blog.csdn.net/allenwells Github:https://githu...
  • AllenWells
  • AllenWells
  • 2015年08月11日 13:39
  • 1248

概念整理

操作系统: 周转时间=
  • piaopiaopiaopiaopiao
  • piaopiaopiaopiaopiao
  • 2014年08月31日 09:49
  • 536
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:概念整理_1
举报原因:
原因补充:

(最多只允许输入30个字)