`

数据结构与算法

阅读更多



 第一章

数据源和数据项

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

数据元素使数据项的集合

 

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

 

算法

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

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
分享到:
评论

相关推荐

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

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

    JS数据结构与算法.pdf

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

    数据结构与算法 数据结构与算法课后习题答案

    数据结构与算法是计算机科学的基础,它涉及到如何有效地组织和管理数据,以便进行高效地查找、存储和处理。本资源包含的数据结构与算法课后习题答案,是学习这一领域的重要辅助材料,可以帮助学生深入理解和巩固所学...

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

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

    数据结构与算法视频课程(59集)

    资源名称:数据结构与算法视频课程(59集)资源目录:【】mysql视频教程第41讲存储过程【】数据结构与算法_1.10算法的评价【】数据结构与算法_1.1编程的灵魂:数据结构 算法【】数据结构与算法_1.2算法的作用:猜...

    java数据结构与算法.pdf

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

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

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

    武汉大学 C#数据结构与算法

    《武汉大学 C#数据结构与算法》是一门深入探讨计算机科学基础的课程,主要针对C#编程语言,涵盖了数据结构和算法这两个核心概念。在学习这门课程时,你将有机会掌握C#语言如何用于实现高效的数据管理和计算方法。 1...

    python数据结构与算法

    python数据结构与算法python数据结构与算法python数据结构与算法python数据结构与算法python数据结构与算法python数据结构与算法python数据结构与算法python数据结构与算法python数据结构与算法python数据结构与算法...

    Java数据结构与算法第二版源代码

    《Java数据结构与算法第二版源代码》是一个深入学习Java编程和算法的重要资源,它包含了丰富的实例和程序,旨在帮助开发者提升对数据结构和算法的理解与应用能力。在这个压缩包中,有两个主要的子文件:...

    数据结构与算法教程

    数据结构与算法是计算机科学的核心内容,它们在解决实际问题、提高程序效率以及编写高质量软件中扮演着至关重要的角色。数据结构是计算机存储、组织数据的方式,它可以帮助我们在计算机中以更加高效和合适的方式表示...

    数据结构与算法.pdf

    数据结构与算法.pdf 数据结构是计算机科学中的一门重要课程,涉及到数据的逻辑结构、存储结构、算法等方面的知识。在本文件中,我们将详细介绍数据结构的基本概念、逻辑结构、存储结构、抽象数据类型、算法等知识点...

    数据结构与算法(C#版)

    ### 数据结构与算法(C#版)关键知识点解析 #### 一、引言 《数据结构与算法(C#版)》是一本旨在通过C#语言来介绍数据结构与算法原理的书籍。随着C#语言和.NET Framework的发展,这本书不仅填补了国内以C#语言讲解...

    数据结构与算法分析—c语言描述

    《数据结构与算法分析—C语言描述》是一本深度探讨数据结构和算法的书籍,它以C语言作为实现工具,为读者提供了丰富的编程实践指导。这本书涵盖了数据结构的基础理论、设计方法以及C语言的实现技巧,是计算机科学...

    数据结构与算法-PPT课件

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

Global site tag (gtag.js) - Google Analytics