RC4加密解密算法

RC4是一种对称密码算法,它属于对称密码算法中的序列密码(streamcipher,也称为流密码),它是可变密钥长度,面向字节操作的流密码。 RC4是流密码streamcipher中的一种,为序列密码。RC4加密算法是Ron Rivest在1987年设计出的密钥长度可变的加密算法簇。起初该算法是...

2018-10-09 12:08:59

阅读数:75

评论数:0

用实例给新手讲解RSA加密算法

SA加密算法是最常用的非对称加密算法,CFCA在证书服务中离不了它。但是有不少新来的同事对它不太了解,恰好看到一本书中作者用实例对它进行了简化而生动的描述,使得高深的数学理论能够被容易地理解。我们经过整理和改写特别推荐给大家阅读,希望能够对时间紧张但是又想了解它的同事有所帮助。    RSA是第一...

2018-10-09 11:28:29

阅读数:32

评论数:0

二叉查找树和二叉堆

A. 二叉查找树(Binary Search Tree),又称为有序二叉树,排序二叉树,满足以下性质: 1)没有键值相等的节点。 2)若左子树不为空,左子树上节点值均小于根节点的值。 3)若右子树不为空,右子树上节点值均大于根节点的值。   二叉查找树中对于目标节点的查找过程类似与有序数组...

2018-08-20 21:33:02

阅读数:57

评论数:0

红黑树(RB-tree)比AVL树的优势在哪?

今天看了STL源码剖析中关于红黑树的原理和实现,看完复杂的节点插入、节点颜色变换后不禁想:这些功能经典的AVL树也能实现,为什么要提出红黑树?查了些资料,并且加上自己理解,感叹红黑树的巧妙。 首先红黑树是不符合AVL树的平衡条件的,即每个节点的左子树和右子树的高度最多差1的二叉查找树。但是提出了...

2018-08-20 21:18:04

阅读数:17

评论数:0

彻底搞懂红黑树(三)

从红黑树上删除一个节点,可以先用普通二叉搜索树的方法,将节点从红黑树上删除掉,然后再将被破坏的红黑性质进行恢复。       我们回忆一下普通二叉树的节点删除方法:Z指向需要删除的节点,Y指向实质结构上被删除的结点,如果Z节点只有一个子节点或没有子节点,那么Y就是指向Z指向的节点。如果Z节点有两...

2018-08-20 20:42:43

阅读数:35

评论数:0

浅谈数据结构-二叉树

二叉树是树的特殊一种,具有如下特点:1、每个结点最多有两颗子树,结点的度最大为2。2、左子树和右子树是有顺序的,次序不能颠倒。3、即使某结点只有一个子树,也要区分左右子树。 一、特殊的二叉树及特点   1、斜树 所有的结点都只有左子树(左斜树),或者只有右子树(右斜树)。这就是斜树,应用较...

2018-08-13 13:23:19

阅读数:15

评论数:0

深入理解红黑树

第一篇:教你透彻了解红黑树:http://blog.csdn.net/v_JULY_v/archive/2010/12/29/6105630.aspx 第二篇:红黑树算法的层层剖析与逐步实现http://blog.csdn.net/v_JULY_v/archive/2010/12/31/61091...

2018-08-12 21:44:11

阅读数:22

评论数:0

彻底搞懂红黑树(一)

红黑树和c++ 虚拟继承内存分布 几乎成了我的死敌,因为完全没用过,所以导致每次看懂了之后都忘了(也许不是真的看懂了,有些关键性的东西没理解透),这次准备把这两个难题(其实也不难)仔细看懂,然后再写一份比较详细的文档作为备忘。   首先是红黑树 零  八卦起源       1972年,鲁...

2018-08-12 21:41:52

阅读数:104

评论数:0

最小/大堆的操作及堆排序

摘自:《啊哈算法》 我们要用1, 2, 5, 12, 7, 17, 25, 19, 36, 99, 22, 28, 46, 92来建立最小堆,并且删除最小的数,并增加一个数23 如何建立这个堆: //建堆 n = 0; for (int i = 1; i <= m; ...

2018-08-08 20:37:54

阅读数:31

评论数:0

归并排序

归并排序的原理如下。递归的将数组两两分开直到最多包含两个元素,然后将数组排序合并,最终合并为排序好的数组。假设我有一组数组 [3, 1, 2, 8, 9, 7, 6],中间数索引是 3,先排序数组 [3, 1, 2, 8] 。在这个左边数组上,继续拆分直到变成数组包含两个元素(如果数组长度是奇数的...

2018-08-06 21:01:24

阅读数:43

评论数:0

二叉搜索树(BST)的删除算法原理解析

二叉搜索树的删除算法主要分两种情况: 1、要删除的节点只有一个孩子(左孩子或右孩子),这种情况比较简单,只需要将该孩子连接到当前节点的父节点即可。   下面重点讲讲第二种情况: 2、第二种情况便是要删除的节点有两个孩子,这个时候的算法就比较复杂(相比较于只有一个孩子的情况)。首先我们需要找...

2018-07-21 17:48:09

阅读数:28

评论数:0

【排序算法】插入排序(C++实现)

插入排序的基本思想是每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子文件中的适当位置,直到全部记录插入完成为止。常见的插入排序有插入排序(Insertion Sort),希尔排序(Shell Sort),二叉查找树排序(Tree Sort),图书馆排序(Library Sort),P...

2018-07-02 19:52:22

阅读数:49

评论数:0

红黑树(四)之 C++的实现

红黑树的介绍红黑树(Red-Black Tree,简称R-B Tree),它一种特殊的二叉查找树。红黑树是特殊的二叉查找树,意味着它满足二叉查找树的特征:任意一个节点所包含的键值,大于等于左孩子的键值,小于等于右孩子的键值。除了具备该特性之外,红黑树还包括许多额外的信息。红黑树的每个节点上都有存储...

2018-06-07 21:35:36

阅读数:61

评论数:0

红黑树(一)之 原理和算法详细介绍

R-B Tree简介    R-B Tree,全称是Red-Black Tree,又称为“红黑树”,它一种特殊的二叉查找树。红黑树的每个节点上都有存储位表示节点的颜色,可以是红(Red)或黑(Black)。红黑树的特性:(1)每个节点或者是黑色,或者是红色。(2)根节点是黑色。(3)每个叶子节点(...

2018-06-07 21:29:21

阅读数:67

评论数:0

算法导论 第12章 二叉查找树

二叉查找树的概念和性质       二叉查找树(Binary Search Tree)是这样的一棵树:设节点x的左右孩子分别为y,z,那么key[x] <= key[z]且key[x] >= key[x],而它的以y和z分别为根的左右子树也是满足这样条件...

2018-06-07 16:10:06

阅读数:37

评论数:0

算法导论 13-3 AVL平衡二叉树

题目   AVL树的主要操作   在本篇博客中我们只实现AVL平衡树的insert、erase、edit和locate以及两个遍历操作,当然还包括一些配套函数,主要论述insert和erase操作,其他诸如successor、minimum等等操作可以参考二叉查找树和红黑树,实现很类似,并没有太大...

2018-06-07 14:35:36

阅读数:36

评论数:0

归并排序的C++实现

归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。归并过程为:比较a[i]和a[j]的大小...

2018-04-23 21:38:13

阅读数:28

评论数:0

c++实现最大堆和最小堆

注释部分已经说明如何建立最大堆template<class T> class MinHeap { public: MinHeap() { _maxSize = 0; _index = -1; _minHeap = NULL; } ...

2018-04-23 11:25:30

阅读数:416

评论数:0

C++实现堆、最大堆、最小堆 -- 堆排序插入删除操作

堆是一种经过排序的完全二叉树,其中任一非终端节点的数据值均不大于(或不小于)其左孩子和右孩子节点的值。最大堆和最小堆是二叉堆的两种形式。最大堆:根结点的键值是所有堆结点键值中最大者。最小堆:根结点的键值是所有堆结点键值中最小者。而最大-最小堆集结了最大堆和最小堆的优点,这也是其名字的由来。最大-最...

2018-04-22 17:24:45

阅读数:97

评论数:0

处理海量数据的高级排序之——希尔排序(C++)

                            常见排序算法一般按平均时间复杂度分为两类: O(n^2):冒泡排序、选择排序、插入排序 O(nlogn):归并排序、快速排序、堆排序 简单排序时间复杂度一般为O(n^2),如冒泡排序、选择排序、插入排序等高级排序时间复杂度一般为O(nlo...

2018-04-21 15:59:24

阅读数:54

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭