![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
介绍数据结构与算法
小鬼识途
一直在学习
展开
-
浅谈map与unordered_map的区别
转自:https://www.cnblogs.com/LDTSB-0101001/p/9749137.htmlmap类: map是一种容器,内部元素由键值对组成,键与值的数据类型可以不同,键的值是唯一的(此处的值不是键值对中的值),用于自动排序数据值,排序方式是根据某种明确、严格的弱排序标准进行的,这种排序标准是由map内部的比较对象(即map::key_comp)指定的。使用时要引入#include <map>。 在键——值这个映射关系中,元素数据值是可以更改的,但键值是常量,转载 2020-07-25 10:53:23 · 490 阅读 · 0 评论 -
ECC(椭圆曲线密码编码学)简介
参考:ECC加密算法入门介绍 ECC(Elliptic Curves Cryptography,椭圆曲线密码编码学)属于公开密钥算法。一、平行线 假设平行线相交于无穷远点P∞,那么所有直线都相交,且只有一个交点。为与无穷远点相区别把原来平面上的点叫做平常点。无穷远点的性质:直线上的无穷远点只能有一个。 平面上一组相互平行的直线有公共的无穷远点。 平面上任...原创 2019-12-24 14:33:56 · 7272 阅读 · 1 评论 -
算术编码(无损数据压缩)
转载自:http://blog.sina.com.cn/s/blog_b2e97e5a01019p30.html算术编码是一种无损数据压缩方法,也是一种熵编码的方法。和其它熵编码方法不同的地方在于,其他的熵编码方法通常是把输入的消息分区为符号,然后对每个符号进行编码,而算术编码是直接把整个输入的消息编码为一个数,一个满足(0.0 ≤n< 1.0)的小数n。1、编码算术编码将整...转载 2019-03-01 17:28:17 · 4459 阅读 · 0 评论 -
快速排序原理及C++实现
https://blog.csdn.net/nrsc272420199/article/details/82587933原理: 快速排序,说白了就是给基准数据找其正确索引位置的过程. 如下图所示,假设最开始的基准数据为数组第一个元素23,则首先用一个临时变量去存储基准数据,即tmp=23;然后分别从数组的两端扫描数组,设两个指示标志:low指向起始位置,high指向末尾. ...转载 2020-04-09 19:39:15 · 296 阅读 · 0 评论 -
堆排序(大顶堆、小顶堆)
https://www.cnblogs.com/lanhaicode/p/10546257.html大顶堆:每个结点的值都大于或等于其左右孩子结点的值小顶堆:每个结点的值都小于或等于其左右孩子结点的值...原创 2020-04-06 14:50:06 · 867 阅读 · 0 评论 -
排序算法-归并排序
算法步骤申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列; 设定两个指针,最初位置分别为两个已经排序序列的起始位置; 比较两个指针所指向的元素,选择相对小的元素放入到合并空间,并移动指针到下一位置; 重复步骤 3 直到某一指针达到序列尾; 将另一序列剩下的所有元素直接复制到合并序列尾。参考代码void merge_sort(int a[], int c[],...原创 2020-01-14 21:19:03 · 83 阅读 · 0 评论 -
排序算法-希尔排序
算法思想希尔排序是特殊的插入排序,直接插入排序每次插入前的遍历步长为1,而希尔排序是将待排序列分为若干个子序列,对这些子序列分别进行直接插入排序,当每个子序列长度为1时,再进行一次直接插入排序时,结果一定是有序的。常见的划分子序列的方法有:初始步长(两个子序列相应元素相差的距离)为要排的数的一半,之后每执行一次步长折半。希尔排序的过程演示如下:算法复杂度排序方法 时间复杂...原创 2020-01-14 21:10:18 · 116 阅读 · 0 评论 -
排序算法-插入排序(时间复杂度n^2,稳定)
算法步骤将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。 从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置。(如果待插入的元素与有序序列中的某个元素相等,则将待插入元素插入到相等元素的后面。)时间复杂度算法稳定性相同元素的前后顺序并没有改变,是一种稳定的排序算法。参考代码void insertion_sort...原创 2020-01-14 20:54:46 · 222 阅读 · 0 评论 -
排序算法-选择排序(时间复杂度n^2,不稳定)
算法步骤首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置 再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。 重复第二步,直到所有元素均排序完毕。时间复杂度算法稳定性选择排序是给每个位置选择当前元素最小的,比如给第一个位置选择最小的,在剩余元素里面给第二个元素选择第二小的,依次类推,直到第n−1n−1个元素,第nn个元素不用选择了,因为只剩下...原创 2020-01-14 20:44:34 · 332 阅读 · 0 评论 -
排序算法-冒泡排序(时间复杂度n^2,稳定排序)
算法步骤比较相邻的元素。如果前者比后者大,就交换两者。 对每一对相邻元素作比较,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。 针对所有的元素重复以上的步骤,除了最后一个。 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。时间复杂度算法稳定性冒泡排序就是把小的元素往前调或者把大的元素往后调。比较是相邻的两个元素比较,交换也发生在这两...原创 2020-01-14 20:33:13 · 249 阅读 · 0 评论 -
排序算法-综述(时间空间复杂度等比较)
排序算法可以分为内部排序和外部排序。内部排序是数据记录在内存中进行排序;而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。 常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。一图以概括:关于时间复杂度:平方阶 (O(n2)) 排序 各类简单排序:直接插入、直接选择和冒...原创 2020-01-14 20:23:23 · 135 阅读 · 0 评论 -
二叉树-重构
[ 先序 | 后序 ] + 中序,即可重构二叉树。不含一度节点的二叉树称作真二叉树(proper binary tree)。[ 先序 + 后序 ] x 真二叉树。原创 2020-02-24 19:29:38 · 130 阅读 · 0 评论 -
二叉树-层次遍历
逐层从左至右访问原创 2020-02-24 19:12:27 · 220 阅读 · 0 评论 -
二叉树-中序遍历
inorder traversal原创 2020-02-22 16:20:04 · 178 阅读 · 0 评论 -
二叉树-先序遍历
先序遍历(Pre-order),按照根左右的顺序沿一定路径经过路径上所有的结点。在二叉树中,先根后左再右。代码实现和实例原创 2020-02-22 15:58:44 · 314 阅读 · 0 评论