算法笔记
铃兰177
蓬莱山在
展开
-
算法笔记——数据结构(堆和哈夫曼树)
1.堆的定义与基本操作 堆是一棵完全二叉树,树中每个结点的值都不小于或不大于其左右孩子结点的值。如果父亲结点的值大于或等于孩子结点的值,那么这样的堆为大顶堆。如果父亲结点的值小于或等于孩子结点的值,那么称这样的堆为小顶堆。 堆一般用于优先队列的实现,而优先队列默认情况下使用的是大顶堆。以下以大顶堆来介绍。 对于完全二叉树来说,用数组来实现最为简洁。将第一个结点存储于数组中的1号位,并...原创 2020-04-07 22:17:20 · 271 阅读 · 0 评论 -
算法笔记——数据结构(并查集)
1.并查集的定义 并查集是一种维护集合的数据结构,并(Union合并),查(find查找),set(集合)。 并查集使用数组来实现:int father[n]; 其中father[i]表示元素i的父亲结点,而父亲结点本身也是这个集合内的元素。eg:father[1] = 2 表示元素1的父结点是元素2。如果father[i] = i ,则说明元素i是该集合的根结点。2.并查集的基本操作...原创 2020-04-07 19:24:11 · 112 阅读 · 0 评论 -
算法笔记——数据结构(二叉查找树的基本操作)
二叉查找树的基本操作有查找、插入、删除。下面的算法过程由一般二叉树改造而来。有关二叉树相关操作介绍的博客算法笔记——数据结构(树)。 1.二叉查找树的定义 二叉查找树(Binary Search Tree,BST)是一种特殊的二叉树,又称为排序二叉树、二叉探索树、二叉排序树。二叉查找树的递归定义如下: ①要么二叉查找树是一棵空树。 ②要么二叉查找树由根结点。左子树、右子树组成,其中左子...原创 2020-04-04 03:24:25 · 225 阅读 · 3 评论 -
算法笔记——数据结构(树的遍历)
1.树的静态写法 树的子结点个数不限且子结点没有先后次序,与二叉树不同。struct node{ int data;//数据域 vector<int> child;//指针域,用来存放所有子结点的下标}Node[maxn]; 新建结点:int index = 0;int newNode(int v){ Node[index].data = v;//数据域为v N...原创 2020-04-04 01:58:10 · 131 阅读 · 1 评论 -
算法笔记——数据结构(二叉树的遍历)
二叉树的遍历是指通过一定的顺序访问二叉树的所有结点。遍历方法一般有四种:先序遍历、中序遍历、后序遍历及层次遍历。其中,前三种一般使用**深度优先搜索(DFS)实现,而层次遍历一般使用广度优先搜索(BFS)**实现。 1.先序遍历 遍历顺序:根结点->左子树->右子树。 用递归的写法,那递归式就是先访问根结点,再访问左子树,最后访问右子树。递归边界就是二叉树为一颗空树。...原创 2020-04-03 19:10:02 · 338 阅读 · 0 评论 -
算法笔记——数据结构(树)
1.树的定义根结点(root):对一棵树树来说最多存在一个根结点。叶子结点(leaf):叶子节点不再延伸出新的结点,即度为0的结点。边(edge):茎干和树枝的统一抽象,且一条边只用来连接两个结点, 树被定义成由若干个结点和若干条边组成的数据结构,且在树中的结点不能被边连接成环。 比较实用的概念和性质: (1)空树(empty tree):没有结点。 (2)树的层次(layer)...原创 2020-04-03 16:35:26 · 339 阅读 · 0 评论 -
算法笔记杂记——STL介绍
1.Vector的常见用法详解 需要添加#include < vector> using namespace std; vector翻译为向量,可以理解为“长度根据需要而自动改变的数组”。(1)定义 vector< typename>...原创 2020-03-31 03:07:57 · 174 阅读 · 0 评论 -
算法笔记杂记2——排序
1.选择排序数组A[n],从0开始枚举n次,每次选出最小的数放在该趟数第一位。原创 2020-03-26 01:28:52 · 137 阅读 · 0 评论 -
算法笔记杂记
该杂记为阅读时做的摘要,如有疑问和错误欢迎大家在评论区里提出。sscanf 和 sprintf包含在stdio.h头文件中,用于处理字符串问题。sscanf(str,"%d",&n);//将字符数组str中的内容以%d的格式写到整形中 ssprintf(str,"%d",n);//把整形n以%d的格式写到str字符数组中注意在"%d:%d"引号中添加符号来解释或者添加符号...原创 2020-03-06 21:35:12 · 106 阅读 · 0 评论 -
算法笔记——数据结构(链表)
1.链表的概念 线性表是一类很常用的数据结构,分为顺序表和链表。 其中顺序表可以简单地理解为“数组”这个概念,定义一个数组,计算机会从内存中取出一块连续的地址来存放给定长度的数组。而链表与数组不同的地方在于,链表是由若干个结点组成,且结点在内存中的存储位置通常是不连续的。 链表的结点一般由两个部分组成,数据域和指针域。 struct node{ typename data; nod...原创 2020-04-01 15:41:32 · 71 阅读 · 0 评论 -
算法笔记——数据结构(栈和队列)
1.栈——stack 栈是一种后进先出的数据结构。 栈顶指针始终指向栈的最上方元素。 (1)当使用数组实现栈时,栈顶指针是一个int型变量TOP。栈空时,TOP=-1。 (2)当使用链表实现栈时,则是一个int*型的指针。一般用STL的stack来写指针。可参考我另一篇博文。算法笔记——STL介绍 用数组实现栈的常见操作: (1)清空(clear)void clear()...原创 2020-03-31 16:29:45 · 228 阅读 · 0 评论