第一章 绪论

基本概念和术语


数据

数据-> 多个数据元素 -> 多个数据项
数据对象 是 性质相同的数据元素的集合

结构

数据元素相互之间的关系成为结构

  • 集合
  • 线性结构
  • 树形结构
  • 图状结构

数据结构是一个二元组 定义形式为 Data_Structure = ( D, S ), 其中D是元素有限集,S 是D上的关系有限集。

逻辑结构

对操作对象的数学描述,即从操作对象抽象出来的数学模型称为逻辑结构。
一般来说,数据结构代指逻辑结构

物理结构

数据结构在计算机的表示(又称映像)称为物理结构,又叫做存储结构。用由若干个组合起来形成的一个位串表示一个数据元素。这个位串称为元素,也叫做结点
当数据元素由多个数据项组成时,位串中对应于各个数据项的子位串称为数据域

数据元素之间关系的表示方法

  1. 顺序映像
  2. 非顺序映像

由此得到两种不同的存储结构:顺序存储结构链式存储结构

顺序映像

借助元素在存储器中的相对位置来表示元素之间的逻辑关系

非顺序映像

借助指针

虚拟存储结构

用一维数组描述顺序存储结构,用指针描述链式存储结构

任何一个算法的设计取决于选定的逻辑结构
算法的实现则依赖于采用的存储结构

数据类型

int a
数据类型决定取的字节数,变量名决定起始位置

按“值”的特性不同,数据类型可分为两类

  • 非结构的原子类型
  • 结构类型

原子类型

原子类型的值不可分解,例如基本类型(整型、实型、字符型和枚举型)、指针类型和空类型。

结构类型

结构类型的值是由若干成分按某种结构组成的,因此是可以分解的,并且他的成分可以是非结构的,也可以是结构的。

某种意义上,数据结构(逻辑结构)可以看成是一组具有相同结构的值
结构类型可以看成由一种数据结构和定义在其上的一组操作组成

抽象数据类型(Abstract Data Type, ADT)

指一个数学模型以及定义在其上的一组操作,与数据类型相似。“抽象”的意义在于数据类型的数学抽象特性

抽象数据类型可细分为三种类型:

  • 原子类型
    不可分解。一般来说,此类型较少,因为原有固有类型足以满足需求。但有时也有必要定义新的原子数据类型,例如数位为100的整数。
  • 固定聚合类型
    其值由确定数目的成分按某种结构组成,例如复数是由两个实数依确定次序关系构成。
  • 可变聚合类型
    与固定聚合类型相比,其值的数目不确定

显然后两种类型统称结构类型

抽象数据类型的形式定义

抽象数据类型用三元组表示 ADT = (D, S, P),其中D是数据对象,S是D上的关系集,P是对D的基本操作集。
采用如下格式定义抽象数据类型:

ADT抽象数据类型名{
    数据对象:(数据对象的定义)
    数据关系:(数据关系的定义)
    基本操作:(基本操作的定义)
}ADT抽象数据类型名

其中,数据对象和数据关系的定义用伪代码描述,基本操作的定义格式为

基本操作名(参数表)
    初始条件:<初始条件描述>
    操作结果:<操作结果描述>

基本操作有两种参数,形参和引用,引用参数以&打头。
初始条件描述了操作执行之前数据结构和参数应满足的条件,若不满足则操作失败并返回出错信息。
操作结果说明操作完成后,数据结构的变化状况和应返回的结果

  • 抽象类型三元组的定义
ADT Triplet{
  数据对象:D = {e1,e2,e3|e1,e2,e3∈(定义了关系运算符的某个集合)}
  数据关系:R1 = {<e1,e2>,<e2,e3>}
  基本操作:
        InitTriplet(&T, v1, v2, v3)
           操作结果:构造了三元组T,元素e1, e2, e3分别被赋以参数v1, v2, v3的值
        Get(T, i, &e)
           初始条件:三元组T已经存在, 1≤i≤3
           操作结果:用e返回T的第i个元素的值
        Put(&T, i ,e)
           初始条件:三元组T已经存在, 1≤i≤3
           操作结果:改变T的第i个元素的值为e
        ......
}ADT Triplet

算法和算法分析

  • 算法的五个特性
    1. 有穷性
    2. 确定性:算法指令具有明确的含义,阅读时不会出现二义性,且算法只有唯一的一条执行路径,即对于相同的输入只能得出相同的输出
    3. 可行性
    4. 输入
    5. 输出

算法效率的度量

一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数f(n),算法的时间量度记作 T(n) = O(f(n)),称作时间复杂度。多数情况下,问题的基本操作指最深层循环内的语句中的原操作

语句的频度

  1. {++x; s = 0; }
  2. for (i=1;i<=n; ++i) {++x; s += x;}
  3. for (j=1; j<=n; ++j)
    for (k=1; k<=n; ++k) {++x; s+=x;}

以上x自增一的频度分别为1、n和n^2,他们的时间复杂度分别为O(1)、O(n)和O(n²)、分别称为常量阶,线性阶和平方阶。类似的,还有对数阶O(log n)多项式阶O(n^k)指数阶O(2^n)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,406评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,732评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,711评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,380评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,432评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,301评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,145评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,008评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,443评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,649评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,795评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,501评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,119评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,731评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,865评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,899评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,724评论 2 354

推荐阅读更多精彩内容