稀疏矩阵的三种存储方式
摘要:稀疏矩阵的三种存储方式 一,相关概念 ㈠特殊矩阵:矩阵中存在大多数值相同的元,或非0元,且在矩阵中的分布有一定规律。 ⒈对称矩阵:矩阵中的元素满足 aij=aji 1≤i,j≤n ⒉三角矩阵:上(下)三角矩阵指矩阵的下(上)三角(不包括对角线)中的元素均为常数c或0的n阶矩阵。 ⒊对角矩阵(带状矩阵
阅读全文
posted @
2017-11-01 16:23
莫水千流
阅读(30920)
推荐(2) 编辑
几种常用hash算法及原理
摘要:计算理论中,没有Hash函数的说法,只有单向函数的说法。所谓的单向函数,是一个复杂的定义,大家可以去看计算理论或者密码学方面的数据。用“人 类”的语言描述单向函数就是:如果某个函数在给定输入的时候,很容易计算出其结果来;而当给定结果的时候,很难计算出输入来,这就是单项函数。各种加密函 数都可以被认为
阅读全文
posted @
2017-06-11 07:51
莫水千流
阅读(15201)
推荐(1) 编辑
STL sort 函数实现详解 ZZ
摘要:前几天阿里电话一面,被问到STL中sort函数的实现。以前没有仔细探究过,听人说是快速排序,于是回答说用快速排序实现的,但听电话另一端面试官的声音,感觉不对劲,知道自己回答错了。这几天特意看了一下,在此记录。 函数声明 #include <algorithm> template< class Ran
阅读全文
posted @
2017-04-06 08:52
莫水千流
阅读(463)
推荐(1) 编辑
浅谈算法和数据结构: 九 平衡查找树之红黑树
摘要:前面一篇文章介绍了2-3查找树,可以看到,2-3查找树能保证在插入元素之后能保持树的平衡状态,最坏情况下即所有的子节点都是2-node,树的高度为lgN,从而保证了最坏情况下的时间复杂度。但是2-3树实现起来比较复杂,本文介绍一种简单实现2-3树的数据结构,即红黑树(Red-Black Tree)
阅读全文
posted @
2017-04-05 13:06
莫水千流
阅读(630)
推荐(0) 编辑
示平衡二叉树旋转
摘要:下面对本算法做原理上的介绍: 1、 如何回溯修改祖先结点的平衡因子 我们知道,在AVL树上插入一个新结点后,有可能导致其他结点BF值的改变,哪些结点的BF值会被改变?如何计算新的BF值呢?要解决这些问题,我们必须理解以下几个要点: l 只有根结点到插入结(橙色结点)点路径(称为插入路径)上的结点的B
阅读全文
posted @
2017-04-05 09:08
莫水千流
阅读(676)
推荐(0) 编辑
以AVL树为例理解二叉树的旋转(Rotate)操作
摘要:树旋转是在二叉树中的一种子树调整操作, 每一次旋转并不影响对该二叉树进行中序遍历的结果. 树旋转通常应用于需要调整树的局部平衡性的场合. 树旋转包括两个不同的方式, 分别是左旋转和右旋转. 两种旋转呈镜像, 而且互为逆操作. 平衡二叉树在进行插入操作的时候可能出现不平衡的情况,AVL树即是一种自平衡
阅读全文
posted @
2017-04-05 08:56
莫水千流
阅读(1120)
推荐(0) 编辑
快速排序
摘要:快速排序(QuickSort)划分的关键是要求出基准记录所在的位置pivotpos,编程时候的关键点 快速排序: 既然能把冒泡KO掉,马上就激起我们的兴趣,tnd快排咋这么快,一定要好好研究一下。 首先上图: 从图中我们可以看到: left指针,right指针,base参照数。 其实思想是蛮简单的,
阅读全文
posted @
2016-12-06 16:55
莫水千流
阅读(394)
推荐(0) 编辑
哈希函数
摘要:1,直接地址法,线性函数值为哈希地址。2,数字分析法,关键字是以r为基的数,并且哈希表中可能出现的关键字是实现知道的,则可以取关键字的若干数位组成哈希表。3,平方取中法取关键字的平方后的中间几位为哈希地址。4,折叠法将关键字分割成位数相同的几个部分(最后一部分的位数可以不同),然后取这几部分的叠加和...
阅读全文
posted @
2015-02-11 20:52
莫水千流
阅读(488)
推荐(0) 编辑
B-树和B+树
摘要:B-树和B+树是一种平衡的多路查找树,它在文件系统中很有用。一颗m阶的b-树,或为空树,或满足下列特性的m叉树。1)树中每个节点至多有m棵子树2)若根结点不是叶子结点,则至少有两棵子树。3)除根之外的所有非终端结点至少有[m/2]棵子树;4) 所有的非终端结点中包含下列信息(n,A0,K1,A1,K...
阅读全文
posted @
2015-02-01 17:26
莫水千流
阅读(269)
推荐(0) 编辑
Levenshtein Distance (编辑距离) 算法详解
摘要:编辑距离即从一个字符串变换到另一个字符串所需要的最少变化操作步骤(以字符为单位,如son到sun,s不用变,将o->s,n不用变,故操作步骤为1)。为了得到编辑距离,我们画一张二维表来理解,以beauty和batyu为例:图示如1单元格位置即是两个单词的第一个字符[b]比较得到的值,其值由它上方的值...
阅读全文
posted @
2015-01-14 21:08
莫水千流
阅读(5090)
推荐(0) 编辑
平衡二叉树
摘要:平衡二叉树平衡二叉树又称AVL树。它或者是一颗空树,或者是具有下列性质的二叉树:它的左子树和右子树都是平衡二叉树,且左子树和右子树的深度之差绝对值不超过1.若将二叉树上节点的平衡因子BF(Balance Facter)定义为该节点的左子树的深度减去它的右子树的深度,则平衡二叉树上所有结点的平衡因子只...
阅读全文
posted @
2015-01-13 07:26
莫水千流
阅读(437)
推荐(0) 编辑
静态查找表
摘要:静态查找表顺序查找有序查找折半查找(binary search)判定树 折半查找只适用于有序表,且限于顺序存储结构(对线性链表无法有效的进行折半查找)斐波那契查找:根据斐波那契序列的特点进行分割,假设开始时表中记录个数比某个斐波那契数小1即n=fu-1,然后将给定值key和 [fu -1 ].key...
阅读全文
posted @
2015-01-13 07:07
莫水千流
阅读(672)
推荐(0) 编辑
动态内存管理
摘要:动态内存分配策略:1,从高地址分配不理会已分配给用户内存是否有空闲。直到无法分配位置。系统才去回收用户不能使用的空闲块,并且重新组织内存。2,另一种是用户一旦运行结束,将它占用的内存释放到空闲块。有新请求时,巡视空闲块,找到一个“合适”的分配之。可利用空间表分配方法2种结构(目录表,链表),目录表起...
阅读全文
posted @
2014-11-30 20:00
莫水千流
阅读(216)
推荐(0) 编辑
KMP字符串模式匹配详解(zz)
摘要:刚看到位兄弟也贴了份KMP算法说明,但本人觉得说的不是很详细,当初我在看这个算法的时候也看的头晕昏昏的,我贴的这份也是网上找的。且听详细分解:KMP字符串模式匹配详解来自CSDN A_B_C_ABC 网友KMP字符串模式匹配通俗点说就是一种在一个字符串中定位另一个串的高效算法。简单匹配算法的时间复杂度为O(m*n);KMP匹配算法。可以证明它的时间复杂度为O(m+n).。一. 简单匹配算法先来看一个简单匹配算法的函数:int Index_BF ( char S [ ], char T [ ], int pos ) { /* 若串 S 中从第pos(S 的下标0≤pos S[0] != S[1]
阅读全文
posted @
2014-01-04 18:04
莫水千流
阅读(532)
推荐(0) 编辑
A星寻路算法介绍
摘要:你是否在做一款游戏的时候想创造一些怪兽或者游戏主角,让它们移动到特定的位置,避开墙壁和障碍物呢? 如果是的话,请看这篇教程,我们会展示如何使用A星寻路算法来实现它! 在网上已经有很多篇关于A星寻路算法的文章,但是大部分都是提供给已经了解基本原理的高级开发者的。 本篇教程将从最基本的原理讲起。我们会一
阅读全文
posted @
2013-12-10 21:00
莫水千流
阅读(122880)
推荐(36) 编辑
线性表--队列
摘要:和栈相反,队列是一种先进先出(first in first out 缩写为FIFO)的线性表。它只允许在表的一端进行插入,而在另一端删除元素。双端队列:限定插入和删除操作在表的两端进行的线性表-----单链队列 队列的链式存储表示------和线性表类似,队列也可以有两种存储表示。用链表表示的队列简称链队列。typedef struct QNode {QElemType data;struct QNode * next;}QNode ,QueuePtr;typedef struct {Queueptr front; //队头指针Queueptr rear; //队尾指针}LinkQueue;s
阅读全文
posted @
2013-06-11 10:22
莫水千流
阅读(993)
推荐(0) 编辑
线性表--栈
摘要:栈是限定仅在表尾进行插入和删除操作的线性表。因为对栈来说,表位端有其特殊含义,称为栈顶(top),相应的标头称为栈底(bottom),不含元素的空表称为空栈。和线性表类似,栈也有两种存储表示方法。顺序栈,即栈的顺序顺序存储结构是利用一组地址连续的存储单元依次存放自栈底到栈顶的元素。同时附设指针top指示栈顶元素在顺序栈中的位置。 通常 top = 0 表示空栈。-----栈的顺序存储表示------#define STACK_INIT_SIZE 100;#define STACK_INCREMENT 10;typedef struct {SElemType *base;SElemType* t
阅读全文
posted @
2013-06-11 10:08
莫水千流
阅读(497)
推荐(0) 编辑