数据结构与算法
文章平均质量分 77
Neo Zhang
一名嵌入式的小学生阿~
展开
-
数据结构与算法——队列
1 概述 先进先出(FIFO)的线性表 队尾:插入元素;队首:删除元素 抽象数据类型:queue ADT C++代码实现: template<class T> class queue { public: virtual ~queue() {} virtual bool empty() const = 0; // return true iff queue is em...原创 2019-05-27 13:21:52 · 313 阅读 · 0 评论 -
数据结构与算法——二叉树
1 树概述 树:在层次化的数据元素之间有祖先-后代、上级-下属、整体-部分以及其他类似的关系。 根和子树:树t为非空有限集合,其中一个元素为根,其余组成t的子树。 级:树根为1级,其孩子是2级,孩子的孩子为3级,以此类推。 高度(深度):树中级的个数。 元素的度:其孩子的个数。 树的度:其元素的度的最大值。 2 二叉树特性及常用操作 2.1 二叉树特性 与普通树根本区别: (1)每个元素恰好有...原创 2019-05-27 16:29:12 · 367 阅读 · 0 评论 -
数据结构与算法——程序性能分析
程序性能分析 1 什么是程序性能 分类: 空间复杂度 时间复杂度 分析方法: 性能分析 性能测量 2 空间复杂度 2.1 组成: (1)指令空间 编译后的程序指令所占的空间; (2)数据空间 a. 常量和简单变量; b.动态对象(动态数组、动态类等); (3)环境栈空间 保存暂停的函数和方法在恢复运行时所需要的信息: a.返回地址 b.正在调用的函数的所有局部变量值和形参的值 将一个程序...原创 2019-05-23 16:07:34 · 891 阅读 · 0 评论 -
数据结构与算法——竞赛树
1 概述 竞赛树分为赢者树和输者树,赢者树更直观,输者树实现更高效。 比赛用二叉树来描述,每个外部节点表示一名选手,每个内部节点表示一场比赛,同一层内部节点代表一轮比赛,可以同时进行。 如果竞赛树是完全二叉树,则对于n个选手的比赛,最少的比赛场次为log2nlog_2nlog2n。 竞赛树不全是完全二叉树,但是完全二叉树可以是比赛的次数最少,竞赛树也成为选择树。 2 赢者树 2.1 定义 ...原创 2019-05-28 10:12:21 · 2439 阅读 · 0 评论 -
数据结构与算法——线性表(数组描述)
前言 表ADT常用的描述方法有两种:数组描述和链式描述,在STL中分别有容器vector和list与之对应。本文重点讨论线性表的数组描述,通过利用C++语言从零开始实现数组描述的线性表,对其进行学习(所使用的函数名和签名与STL代码相同)。 线性表也称有序表,其每一个实例均为元素的一个有序集合。元素被看做原子,其本身的结构与线性表的结构无关。线性表除了先后关系的有序性之外,不再有其他关系。 表A...原创 2019-05-23 20:35:20 · 607 阅读 · 0 评论 -
数据结构与算法——栈
1 概述 1.1 定义 栈是一种特殊的线性表,插入(入栈或压栈)和删除(出栈或弹栈)都在同一端进行。这一端成为栈顶,另一端为栈底。下图为栈的示意图。 1.2 抽象数据类型 用c++语言实现上图stack抽象类,代码如下: template<class T> class stack { public: virtual ~stack() {} v...原创 2019-05-24 11:01:27 · 196 阅读 · 0 评论 -
数据结构与算法——优先级队列
1 概述 优先级队列:出队列顺序由元素的优先级决定。 堆:一棵完全二叉树,是实现优先级队列效率很高的数据结构。 (STL类priority-queue是用堆实现的优先级队列) 定义: 优先级队列:0个或多个元素的集合,每个元素具有一个优先权或值。 可完成操作:查找一个元素(top)、插入一个元素(push)、删除一个元素(pop) 分类:最小优先级队列、最大优先级队列 抽象数据类型: 最大优...原创 2019-06-01 09:37:35 · 1000 阅读 · 1 评论