-
算法图解之递归
所属栏目:[安全] 日期:2021-04-01 热度:100
图一: ? ?图二: ? ? ? 图一和图二对比,它们的作用都是相同的。从流程上分析,图一流程相对比较复杂,而图二则简单明了, 这是某位同行在stackoverflow上面说过的话:如果使用循环,程序的性能可能更高;如果使用递归,程序可能更容易死理解。如何选择要看什[详细]
-
算法图解之大O表示法
所属栏目:[安全] 日期:2021-04-01 热度:109
大O表示法 大O表示法是一种特殊的表示法,指出了算法的速度有多快。 1.算法的运行时间以不同的速度增加 关于算法的运行时间以不同的速度增加,我联系到平时写代码,严谨的代码(易读,可扩展,精悍,经过多方测试等),通常运行速度与那些不严谨的代码(完全[详细]
-
算法图解之广度优先搜索
所属栏目:[安全] 日期:2021-04-01 热度:121
广度优先搜索的应用场景,如下: (1)编写国际跳棋AI,计算最少走多少步就可获胜; (2)编写拼写检查器,计算最少编辑多个地方就可将错拼的单词改为正确的单词,如将READED改为READER需要编辑一个地方; (3)根据你的人际关系网络找到关系最近的医生; 图简介 假[详细]
-
算法图解之内存的工作原理
所属栏目:[安全] 日期:2021-04-01 热度:91
? 其中fe0ffeeb是一个内存单元的地址,需要将数据存储到内存时,你请求计算机提供存储空间,计算机给你一个存储地址。需要存储多项数据时,有两种基本方式,一种是数组,另外一种是链表。但它们并非都适用于所有情形,因此知道它们的差别非常重要。[详细]
-
【数据结构】二叉树
所属栏目:[安全] 日期:2021-03-31 热度:164
副标题#e# 前言 数据结构还是大二的时候学过的,当然由于是非计算机专业的学生,所以学的也不怎么样,去年用c++实现了最基本的数据结构,链表/栈/队列/二叉树,三月份看的时候还贴到了博客上。然而当时由于代码量不够,其实写的并不是很好,理解也太不到位[详细]
-
【数据结构】冒泡排序
所属栏目:[安全] 日期:2021-03-31 热度:82
对于一个int数组,请编写一个冒泡排序算法,对数组元素排序。 给定一个int数组A及数组的大小n,请返回排序后的数组。 测试样例: [1,2,3,5,3],6 [1,5] class BubbleSort {public: void swap(int * a,int * b){ int temp = *a; *a = *b; *b = temp; } void[详细]
-
【数据结构】快速排序
所属栏目:[安全] 日期:2021-03-31 热度:90
对于一个int数组,请编写一个归并排序算法,对数组元素排序。 给定一个int数组A及数组的大小n,请返回排序后的数组。 测试样例: [1,2,3,5,3],6 [1,5] 思路: 1, 选取第一个为哨兵,不要随机选取 2, 在交换的时候一定要注意偏移量,left一定要加上,不然[详细]
-
【数据结构】 两个栈实现一个队列【面试】
所属栏目:[安全] 日期:2021-03-31 热度:64
栈结构:先进后出,后进先出,只允许在栈尾操作。 队列:先进先出,在队尾入队,在队头出队。 要想用两个栈实现一个队列,就需要使用一个相当于中间量的结构进行队列的入队和出队操作。 用图形象化为: 这样问题就从图中得出了思路: 入队操作:把入队元素[详细]
-
【数据结构】 一个数组实现两个栈【面试】
所属栏目:[安全] 日期:2021-03-31 热度:82
副标题#e# 以前,我们实现一个栈,轻轻松松,无需考虑太多因素,即可实现。 现在,要求在一个数组里实现两个栈,那么在数组里怎么实现栈呢? 无非就是下标索引,方法也不局限一种,例如:用奇数下标作为栈s1的结构,用偶数作为s2的结构;再者:一前一后的结[详细]
-
【数据结构】 栈
所属栏目:[安全] 日期:2021-03-31 热度:184
栈结构,通俗易懂,特点:先进后出,后进先出。 以下,仅对于栈结构常用的操作进行实现 包括: ????????入栈(push),出栈(pop),判空(empty),栈顶元素(GetTop) #include?iostreamusing?namespace?std;templateclass?Tclass?Stack{public:????Stack[详细]
-
【数据结构】 二叉树
所属栏目:[安全] 日期:2021-03-31 热度:56
副标题#e# 二叉树概念 在计算机科学中,二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用于实现二叉查找树和二叉堆。 二 叉树的每个结点至多只有二棵子树(不存在度大于2的结[详细]
-
【数据结构】位图BitMap与布隆过滤器BloomFilter
所属栏目:[安全] 日期:2021-03-31 热度:162
副标题#e# ??? 首先先看一下下面这个腾讯的面试题: 给40亿个不重复的无符号整数,没排过序。给一个无符号整数,如何快速判断一个数是否在这40亿个数中。?【腾讯】 思路一: ??? 最容易想到的解法就是遍历所有的40多亿个整数,然后一个一个判断。但是这个需[详细]
-
【数据结构】常见的7种比较排序算法1
所属栏目:[安全] 日期:2021-03-31 热度:53
副标题#e# ● 直接插入排序(Insert Sort) 1、算法描述: ? ??该算法是一种简单直观的是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上只需用到O(1)的额外空间的排序,因而在从后向前扫描过程中,[详细]
-
【数据结构】之 线性表详解
所属栏目:[安全] 日期:2021-03-31 热度:168
副标题#e# 线性表(Linear List) 基本概念 线性表是由n(n=0)个类型相同数据元素组成的有限序列。数据元素可由若干个数据对象组成,且一个线性表中的数据元素必须属于同一数据对象。 线性表示n个类型相同数据元素的有限序列,对n0,除第一个元素无直接前驱[详细]
-
【数据结构】常见的7种比较排序算法2
所属栏目:[安全] 日期:2021-03-31 热度:64
副标题#e# ● 快速排序(Quick Sort) 1、算法描述: ? ?在平均状况下,排序n个数据要O(nlg(n))次比较。在最坏状况下则需要O(n^2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他 O(nlg(n))算法更快,因为它的内部循环(inner loop)可以在大[详细]
-
【数据结构】非比较排序的算法实现(包括计数排序、计数排序)
所属栏目:[安全] 日期:2021-03-31 热度:171
计数排序: #define?_CRT_SECURE_NO_WARNINGS?1#includeiostreamusing?namespace?std;#includeassert.h#includevectorvoid?Print(vectorint??a){????for?(int?i?=?0;?i??a.size();?i++)????{????????cout??a[i]??"??";????}????cout??endl;}void?CountSort[详细]
-
【数据结构】非比较排序算法(实现计数排序和基数排序)
所属栏目:[安全] 日期:2021-03-31 热度:87
● 计数排序 1、算法思想: ?????? 计数排序是直接定址法的变形。通过开辟一定大小的空间,统计相同数据出现的次数,然后回写到原序列中。 2、步骤: 1)找到序列中的最大和最小数据,确定开辟的空间大[详细]
-
【数据结构】二叉搜索树
所属栏目:[安全] 日期:2021-03-31 热度:123
● 二叉搜索树满足以下条件的二叉树: 1、每个节点都有一个作为搜索依据的关键码(key),所有节点的关键码互不相同。 2、左子树上所有节点的关键码(key)都小于根节点的关键码(key)。 3、右子树上所有节点的关键码(key)都大于根节点的关键码(key)[详细]
-
【数据结构】AVL树
所属栏目:[安全] 日期:2021-03-31 热度:103
副标题#e# 1、AVL树简介 ????? AVL树本质上还是一棵二叉搜索树,又称高度平衡的二叉搜索树。它能保持二叉树的高度平衡,尽量降低二叉树的高度,减少树的平均搜索长度。对于二叉搜索树的介绍和实现,可查看本人上一篇博客。 2、AVL树的特点 1)本身首先是一[详细]
-
【HDU 3328】【数据结构】Flipper
所属栏目:[安全] 日期:2021-03-31 热度:93
? ? ? ? 就是一个翻牌子的问题,写的略繁琐,因为只是实验室水题,所以不优化了,L是从最左翻面并且覆盖到第二堆上,以此类推,模拟就好。 #include "stdio.h"#include "stack"#include "queue"using namespace std;int main(int argc,char const *argv[])[详细]
-
【1509】【数据结构】Windows Message Queue
所属栏目:[安全] 日期:2021-03-31 热度:83
其实就是对于操作符进行重载,然后用个优先队列,水之。 ?还有先后顺序的优先级不要问了。 ?? #include iostream#include queue#include algorithm#include cstringusing namespace std;struct node{char name[1000];int parameter;int priority;int num;[详细]
-
【数据结构】布隆过滤器
所属栏目:[安全] 日期:2021-03-31 热度:177
布隆过滤器(Bloom Filter)是由布隆(Burton Howard Bloom)在1970年提出的。 它实际上是由一个很长的二进制向量和一系列随机映射函数组成,布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都远远超过一般的算法,缺点是[详细]
-
【数据结构】树和二叉树
所属栏目:[安全] 日期:2021-03-31 热度:150
?树 ? ? ? ?树是一种典型的非线性数据结构,它能够很好地应用于描述分支和层次特性的数据集合,是由一个或多个结点组成的有限集合T,一棵树至少有一个结点。 ?? ? ? ? ?树的度, 一个结点的子树数目就是该结点的“度”,在这个结点下面直接与这个结点连着[详细]
-
【数据结构】——平衡二叉树(插入)
所属栏目:[安全] 日期:2021-03-31 热度:125
? ? 平衡二叉树,是一种二叉排序树,其中每个结点的左子树和右子树的高度差至多等于1。它是一种高度平衡的二叉排序树。高度平衡?意思是说,要么它是一棵空树,要么它的左子树和右子树都是平衡二叉树,且左子树和右子树的深度之差的绝对值不超过1。 ? ? 将[详细]
-
算法—选择排序
所属栏目:[安全] 日期:2021-03-19 热度:161
选择排序 选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有[详细]
