随笔分类 -  数据结构与算法

摘要:一、什么是图 1.概述 首先,我们已经在之前学习过了树这种数据结构,树能反映一对多的关系,但是却无法反映多对多的关系,因此我们引入了图这种数据结构。 对于图,其节点也可以叫做顶点,每个节点具有零或者多个相连节点,每个节点之间的连接称为边,从一个节点到达另一个节点路线都称为路径。 以上图为例,其中: 阅读全文
posted @ 2020-08-04 22:03 Createsequence 阅读(284) 评论(0) 推荐(0) 编辑
摘要:一、什么是多路查找树 二叉树有诸多便利之处,但是当二叉树节点极多时,二叉树的构建速度就会受影响,而且过高的层数也会导致对树的操作效率降低。 对于树的查找而言,树的高度决定了查找的时间下限,但是同样数量的节点,如果要高度小那每一层容纳的节点就要多,而二叉树每一层固定的节点数导致的高度难以降低,为此每一 阅读全文
posted @ 2020-07-25 19:48 Createsequence 阅读(324) 评论(0) 推荐(0) 编辑
摘要:一、什么是平衡二叉树 1.概述 平衡二叉树(AVL树)是一种带有平衡条件的二叉搜索树。它的特性如下: AVL树的左右两个子树的高度差的绝对值不超过1 AVL树的左右两个子树都是一棵平衡二叉树 举个例子,如上图所示: 第一棵树左树高2,右树高1,差值为1,是一颗AVL树; 第二棵树左树高2,右树高2, 阅读全文
posted @ 2020-07-23 22:16 Createsequence 阅读(206) 评论(0) 推荐(0) 编辑
摘要:一、什么是二叉排序树 二叉排序树(Binary Sort Tree)又称二叉查找树、二叉搜索树。 它或者是一棵空树;或者是具有下列性质的二叉树: (1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值; (2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值; (3)左、右子树也分别 阅读全文
posted @ 2020-07-20 17:13 Createsequence 阅读(345) 评论(0) 推荐(0) 编辑
摘要:一、什么是赫夫曼编码 哈夫曼编码(Huffman Coding),又称霍夫曼编码,是一种编码方式,可变字长编码(VLC)的一种。Huffman于1952年提出一种编码方法,该方法完全依据字符出现概率来构造异字头的平均长度最短的码字,有时称之为最佳编码, 使用赫夫曼编码可以有效的压缩数据,通常可以节省 阅读全文
posted @ 2020-07-19 18:47 Createsequence 阅读(875) 评论(0) 推荐(1) 编辑
摘要:一、什么是赫夫曼树 给定n个权值作为n个叶子节点,构造一课二叉树,若该树的带权路径长度和(wpl)达到最小,称这样的二叉树为最优二叉树,也就是赫夫曼树。 要理解这句话,我们需要了解几个关键词: 路径:从一个节点往下一个节点之间的通路。若根节点层数为1,则根节点通往L层的节点路径长度为L-1 带权路径 阅读全文
posted @ 2020-07-17 18:05 Createsequence 阅读(302) 评论(0) 推荐(1) 编辑
摘要:一、什么是堆排序 1.堆,堆排序 对于“堆”我们可以理解为具有以下性质的完全二叉树: 每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆 每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆 堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均 阅读全文
posted @ 2020-07-16 21:17 Createsequence 阅读(394) 评论(0) 推荐(0) 编辑
摘要:一、什么是二叉树 1.概述 首先,需要了解树这种数据结构的定义: 树:是一类重要的非线性数据结构,是以分支关系定义的层次结构。每个结点有零个或多个子结点;没有父结点的结点称为根结点;每一个非根结点有且只有一个父结点;除了根结点外,每个子结点可以分为多个不相交的子树 树的结构类似现实中的树,一个父节点 阅读全文
posted @ 2020-07-12 13:52 Createsequence 阅读(244) 评论(0) 推荐(0) 编辑
摘要:一、什么是哈希表 1.概述 哈希表(Hash table,也叫散列表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度这个映射函数叫做散列函数,存放记录的数组叫做散列表。 通俗的理解一下: 如果我们有n个元素要存 阅读全文
posted @ 2020-07-04 13:46 Createsequence 阅读(339) 评论(0) 推荐(0) 编辑
摘要:查找是在大量的信息中寻找一个特定的信息元素,在计算机应用中,查找是常用的基本运算,例如编译程序中符号表的查找。 定义:根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素(或记录)。 分类: 静态查找和动态查找 静态查找:不对表的数据元素和结构进行任何改变。 动态查找:在查找过程同时插入 阅读全文
posted @ 2020-07-01 21:44 Createsequence 阅读(211) 评论(0) 推荐(0) 编辑
摘要:什么是排序? 排序是计算机内经常进行的一种操作,其目的是将一组“无序”的记录序列调整为“有序”的记录序列。 1.排序的分类 排序分为两类: 内部排序:若整个排序过程不需要访问外存便能完成,则称此类排序问题为内部排序。 外部排序:若参加排序的记录数量很大,整个序列的排序过程不可能在内存中完成,则称此类 阅读全文
posted @ 2020-06-30 23:06 Createsequence 阅读(706) 评论(0) 推荐(4) 编辑
摘要:一、概述 先放百科上的说法: 算法的时间复杂度(Time complexity)是一个函数,它定性描述该算法的运行时间。这是一个代表算法输入值的字符串的长度的函数。 时间复杂度常用大O符号表述,不包括这个函数的低阶项和首项系数。使用这种方式时,时间复杂度可被称为是渐近的,亦即考察输入值大小趋近无穷时 阅读全文
posted @ 2020-06-27 13:45 Createsequence 阅读(1752) 评论(0) 推荐(0) 编辑
摘要:一、迷宫回溯问题 1.问题 一个7*8的数组模拟迷宫,障碍用1表示,通路使用0表示,给定起点(1,1)和终点(6,5),要求给出起点到终点的通路 2.解题思路 首先,我们需要给程序一个寻向的基本策略,我们先假定寻向顺序为“下-右-上-左”,也就是说从起点出发,先往下走,往下走不通就往右.....以此 阅读全文
posted @ 2020-06-26 22:52 Createsequence 阅读(554) 评论(2) 推荐(0) 编辑
摘要:一、什么是递归 所谓递归,简单点来说,就是一个函数直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解。 引用知乎大佬的例子: 我们可以把” 递归 “比喻成 “查字典 “,当你查一个词,发现这个词的解释中某个词仍然不懂,于是你开始查这第二个词。 可 阅读全文
posted @ 2020-06-26 17:59 Createsequence 阅读(216) 评论(0) 推荐(0) 编辑
摘要:一、计算器的计算思路分析 我们以计算3+8*2-6这个算式为例: 将算式解析为数字和符号:3,+,8,*,2,-,6 准备一个用于存放数字的数字栈numStack,还有一个存放运算符号的符号栈symbolStack,下面分别简称栈n和栈s 按顺序扫描解析后的数字和符号, 如果是数字,就直接入数栈n, 阅读全文
posted @ 2020-06-25 20:42 Createsequence 阅读(608) 评论(0) 推荐(0) 编辑
摘要:一、什么是栈 栈(stack)是一种先进后出的有序列表,其中的元素只能在线性表的同一端进出, 允许元素插入和删除的一端被称为栈顶(top),固定的另一端被称为栈底(button)。 二、数组简单实现栈 由于栈是只在一端进出,也就是说相比队列实际上只需要有一个栈顶指针top即可: 当栈空时top为-1 阅读全文
posted @ 2020-06-23 21:47 Createsequence 阅读(188) 评论(0) 推荐(0) 编辑
摘要:一、双向链表 双向链表与单链表基本相似,但是最大的区别在于双向链表在节点中除了指向下一节点的next指针外,还有指向前一节点的prev指针,这使得双向链表在可以在任意节点从头尾两个方向进行遍历,是“双向”的。 和单链表相比,双向链表在删除和查询等方面明显在操作上更具有灵活性,但是会消耗更多的内存,需 阅读全文
posted @ 2020-06-21 11:43 Createsequence 阅读(210) 评论(0) 推荐(0) 编辑
摘要:一、什么是链表 链表是一种数据结构,跟数组不同,链表不需要连续的内存空间,而是通过指针将零散的内存块连接起来。 因此,链表的查找需要通过节点按顺序遍历,而增加与删除通过只需要操作指针指向,这也造成了相比数组,链表的查找性能消耗大而增加和删除消耗小的特点。 链表由节点组成,一般每个节点最少包含用于储存 阅读全文
posted @ 2020-06-20 14:29 Createsequence 阅读(266) 评论(0) 推荐(0) 编辑
摘要:一、什么是队列 队列是一种特殊的线性表。 队列元素的进出遵循“先进先出”原则:即只允许在前端(front)也就是队头进行删除操作,而只能在后端(rear)也就是队尾进行插入操作。 如图所示: 队列的最大长度为MaxSize,最大下标为MaxSize-1 入队时队头下标不变而队尾下标改变,出队时则相反 阅读全文
posted @ 2020-06-14 17:09 Createsequence 编辑

more_horiz
keyboard_arrow_up dark_mode palette
选择主题
点击右上角即可分享
微信分享提示