`

数据结构与算法

阅读更多



 第一章

数据源和数据项

数据项:数据结构中讨论的最小单位

数据元素使数据项的集合

 

例如:运动员是一个数据元素它包括姓名、俱乐部名称、出生年月、职务等数据项。

 

算法

算法是为了解决某类问题而规定的一个有限长的操作序列。一个算法必须满足以下五个重要特性:

1.有穷性

2.确定性

3.可行性

4.有输入

5.有输出

 

算法设计的原则

1.正确性

2.可读性

3.健壮性

4.高效率与低储存量的需求

 

一个特定算法的“运算工作量”的大小,只依赖于问题的规模(通常用整数量n表示),或者说,它是问题规模的函数。

假如 ,随着问题规模n的增长,算法执行时间的增长率和f(n)的增长率相同,则可记作:

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

称T(n)为算法的(渐进)时间复杂度

冒泡排序的时间复杂度为T(n) = O(n²)

 

算法 = 控制结构 + 原操作(固有数据类型的操作)

算法的执行时间 = 原操作(i)的执行次数*原操作(i)的执行时间

 

从算法中选取一种对于所研究的问题来说是 基本操作 的原操作, 以该基本操作 在算法中重复执行的次数 作为算法运行时间的衡量准则

 

算法的空间复杂度

 S(n) = O(g(n))

表示随着问题规模n的增大,算法运行所需储存量的增长率与g(n)的增长率相同。

 

第二章 线性表

线性机构是一个数据元素的有序(次序)集。

 

1.集合中必存在唯一的一个“第一元素”。

2.集合中必存在唯一的一个“最后元素”。

3.除最后元素在外,均有唯一的后继。

4.除了第一元素之外,均有唯一的前驱。

 

2.1线性表的类型定义

 

2.2线性表类型的实现--顺序映象

 

用一组地址连续的存储单元依次存放线性表中的数据元素

 

2.3线性表类型的实现--链式映象

 

用一组地址任意的存储单元存放线性表中的数据元素 以元素(数据元素的映像)+指针(指示后继元素存储位置的)=节点(表示数据元素)

以“节点的序列”表示线性表-----称作链表

 

2.4一元多项式的表示

 

例一、有两个集合A和B分别用两个线性表LA和LB表示(即:线性表中的数据元素即为集合中的成员)现要求一个新的结合A = A U B

 

例二、已知一个非纯集合B,试构造一个纯集合A,使A中包含B中所有值各不相同的元素。

 

第三章 栈和队列(和线性表类似)

3.1 栈的类型定义

 

栈是后进先出的

 

队列是后进后出的

 

 

3.2 栈的应用举例

 数制转换 括号匹配的检验 行编辑程序问题 迷宫求解 表达式求解 实现递归

 

 

在计算机中,表达式可以有三种

不同的标识方法

设 Exp = S1 + OP +S2

则称  OP+S1+S2为表达式的前缀表示法

   称  S1+OP+S2为表达式的中缀表示法

   称  S1+S2+OP为表达式的后缀表示法

可见,它以运算符所在不同位置命名的。

3.3 栈类型的实现

 顺序栈 链栈

 

3.4 队列的类型定义

 

3.5 队列类型的实现

 

 

 

 

 

子树

层次:从根开始定义,层次数为0的结点是根结点,其字树的根的层次数为1。

父亲

孩子

兄弟:同一结点的孩子

树中结点的最大层次数称为树的深度(Depth)或高度。树中结点也有高度,其高度是以该结点为根的树的高度。

结点拥有的子树的数目称为结点的(Degree)。度为0的结点称为叶子(leaf)或终端结点。度不为0的结点称为非终端结点分支结点

 

性质1:树中的结点数等于树的边数加1,也等于所有结点的度数之和加1。

 

树中任意两个结点之间都存在唯一的路径,同时又不会出现环路。

 

树中所有结点最大度数为m的有序树称为m叉树。(二叉树

 

森林:是m棵互不相交的树的集合。对树中每个结点而言,其子树的集合即为森林。树和森林的概念相近。删去一棵树的根,就得到一个森林。

 

二叉树:每个结点的度均不超过2的有序树

 

性质2 在二叉树的第i层上最多有2i 个结点

性质3 在二叉树的第i层上最多有2h+1-1个结点

性质4 对于一棵二叉树T,如果其终端结点数为n0,度为2的结点数为n2,,n0 =  n2  + 1

 

 

 

 

满二叉树:高度为k并且有2k+1-1 个节点的二叉树。

完全二叉树(Complete Binary Tree) :

         若在一棵树二叉树中,在最下层最右侧起去掉相邻的若干叶子结点,得到的二叉树即为完全二叉树

  若设二叉树的高度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的节点都连续集中在最左边,这就是完全二叉树。

  完全二叉树是由满二叉树而引出来的。对于深度为K的,有N个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号从1至n的结点一一对应时称之为完全二叉树

 

 

 

 

 

 

 

 二叉树的储存结构:顺序存储结构和链式存储结构。

 

先序遍历:1访问根节点;2先序遍历左子树;3先序遍历右子树;

中序遍历:1中序遍历左子树;2访问根节点;3中序遍历右子树;

后序遍历:1后序遍历左子树;2后序遍历右子树;3访问根节点;

 

红黑二叉树:

 

 

一般的,红黑树,满足一下性质,即只有满足一下性质的树,我们才称之为红黑树:
1)每个结点要么是红的,要么是黑的。
2)根结点是黑的。
3)每个叶结点,即空结点(NIL)是黑的。
4)如果一个结点是红的,那么它的俩个儿子都是黑的。
5)对每个结点,从该结点到其子孙结点的所有路径上包含相同数目的黑结点。

 

 

 

 

 

  • 大小: 2.6 KB
分享到:
评论

相关推荐

    JS数据结构与算法.pdf

    JS 数据结构与算法.pdf 本书主要介绍了 JavaScript 语言的基础知识,包括数据结构和算法。以下是该书的详细知识点: 一、JavaScript 基础知识 * 变量和数据类型 * 运算符和控制结构 * 函数和对象 * 数组和字符串 ...

    java数据结构与算法.pdf

    在编程领域,数据结构与算法是核心组成部分,它们直接影响到程序的效率和性能。Java作为广泛应用的编程语言,其在实现数据结构和算法时有着丰富的库支持和优秀的可读性。下面将对标题和描述中提到的一些关键知识点...

    PTA-数据结构与算法题目集.zip

    PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 ...

    数据结构与算法分析电子书合集

    数据结构与算法分析是计算机科学中的核心领域,对于任何想要深入理解编程和软件开发的人员来说,这都是不可或缺的知识。这个电子书合集包含了23本相关书籍,其中包括经典著作如《算法导论》、《编程之美》以及《设计...

    数据结构与算法分析--C语言描述_数据结构与算法_

    数据结构与算法是计算机科学的基础,对于理解和设计高效的软件至关重要。C语言因其高效、底层特性,常被用于实现数据结构和算法,使得程序更接近硬件,性能更优。本资源"数据结构与算法分析--C语言描述"是针对数据...

    韩顺平老师尚硅谷Java数据结构与算法194集笔记

    这是我从B站上看韩老师讲的数据结构与算法后整理的笔记 代码经过运行,欢迎批评指正 有些地方我感觉还是挺难的 大都经过我自己的语言进行描述,韩老师中期的表达可能或多或少也影响可阅读性,望先生们见谅

    数据结构与算法.pdf

    数据结构与算法.pdf

    数据结构与算法之美

    数据结构与算法是计算机科学领域的两大基石,它们几乎无处不在地影响着我们的日常生活和工作。尽管很多人可能会有这样的误解,认为数据结构和算法是高深且脱离实际工作的理论知识,只在面试或者特定情况下才会用到。...

    青岛大学王卓数据结构与算法课程PPT截图

    数据结构与算法是计算机科学中的核心课程,它们是理解和解决复杂计算问题的基础。青岛大学的王卓教授的这门课程,通过PPT的形式,深入浅出地讲解了这些关键概念。 首先,我们从"绪论"开始。绪论部分通常会介绍数据...

    数据结构与算法的练习题

    数据结构与算法的练习题适合期末复习用数据结构与算法的练习题适合期末复习用数据结构与算法的练习题适合期末复习用数据结构与算法的练习题适合期末复习用数据结构与算法的练习题适合期末复习用数据结构与算法的练习...

    Python数据结构与算法分析.docx

    Python 数据结构与算法分析 Python 数据结构与算法分析是计算机科学中的一门重要课程,涵盖了数据结构和算法两个方面的内容。在 Python 中,数据结构是指对数据的组织、存储和管理方式,而算法则是指解决问题或完成...

    数据结构与算法笔记.pdf

    数据结构与算法笔记.pdf 数据结构与算法是计算机科学中两个紧密相关的概念。数据结构是指计算机中存储、组织和管理数据的方式,而算法是指解决问题的步骤和方法。在这份笔记中,我们将详细介绍算法的五个特性、算法...

    C++数据结构与算法 (第4版)

    - 算法与数据结构的关系。 - **线性表**: - 顺序表与链表的概念及其优缺点。 - 链表操作(如插入、删除等)的具体实现。 - 循环链表和双向链表的特点及应用场景。 - **栈与队列**: - 栈的基本操作(如入栈、...

    数据结构与算法Java语言描述

    Java作为一门广泛使用的编程语言,在数据结构与算法的教学和学习中占据着非常重要的地位。掌握数据结构与算法是进行高效编程和解决复杂问题的基础。本系列文章将系统地讲解Java中的数据结构和算法,同时通过实例来...

    数据结构与算法-概念

    其中复杂度是数据结构与算法中最重要的概念 复杂度也叫渐进式复杂度,通常用大O来表示分为时间复杂度与空间复杂度,用来分析算法的执行效率与数据规模的增长关系。 分析复杂度的时候,低阶(n)、常量、系数三部分...

    Java数据结构与算法源代码

    数据结构与算法的定义 1.广义上理解数据结构与算法: 数据结构是指一组数据的存储结构。算法就是操作数据的一组方法。 ps:图书馆管理员将书籍分门别类“存储”,按照一定规律编号,就是书籍这种“数据的存储结构...

    数据结构与算法-PPT课件

    数据结构与算法是计算机科学中的核心课程,它探讨如何有效地组织和处理数据,以及如何设计和分析解决问题的算法。这份“数据结构与算法-PPT课件”提供了丰富的学习材料,涵盖了多个关键主题。 首先,我们要了解数据...

    青岛大学 王卓 数据结构与算法

    本书共分为十三章,涵盖了数据结构的研究内容、数据元素和数据项、数据结构的两个层次、逻辑结构、数据类型和抽象数据类型、算法和算法分析、算法与程序、算法时间效率的度量、线性表、栈和队列、树和图、排序和搜索...

Global site tag (gtag.js) - Google Analytics