算法与数据结构
文章平均质量分 52
常见算法与数据结构总结,尤其是针对一些典型的、不太好理解的算法作了深入解析,有助于理解与学习。
编程砖家
路漫漫其修远兮,吾将上下而求索
展开
-
蓄水池抽样算法
蓄水池抽样算法原理以及应用。原创 2023-02-25 00:12:19 · 851 阅读 · 0 评论 -
求平均数(a+b)/2与(b-a)/2 + a的区别?可能有意向不到的错误!
编程中二分查找算法需要注意的地方,如何写出bug free的查找算法?求分段中点mid是需要十分注意,否则可能的导致意向不到的错误。原创 2023-01-09 00:19:59 · 343 阅读 · 0 评论 -
排序算法1 -- 拓扑排序
基本的拓扑排序算法。原创 2022-12-20 15:34:33 · 108 阅读 · 0 评论 -
最小生成树算法 -- Prim算法与Kruskal算法
最小生成树的两种基本算法:Prim算法与Kruskal算法。原创 2022-12-20 13:54:12 · 167 阅读 · 0 评论 -
最短路径算法:dijkstra与Floyd算法
无权图的单源最短路径算法、有权图的单源最短路径算法dijkstra算法以及多源最短路径算法Floyd算法的伪代码。原创 2022-12-20 10:47:52 · 211 阅读 · 0 评论 -
二叉树遍历算法1:前序遍历、中序遍历与后续遍历
二叉树的前序、中序、后续遍历递归和非递归算法。原创 2022-12-10 21:56:45 · 514 阅读 · 0 评论 -
RSA加密原理与RSA公钥加密系统、数字签名
RSA加密系统的基本原理,公钥加密以及数字签名实现原理与过程说明。原创 2022-11-22 00:39:52 · 1101 阅读 · 0 评论 -
如何根据状态转移方程确定循环的方向
color=#0099ff size=7 face=“黑体”在解决规划的问题时,如果已经确定状态转移方程,如果确定循环的方向:比如对于上面的状态转移方程,循环的方向应该时i = n - 1; i >= 1; i–j = i + 1; j <= n; ++jk = i; k < j; ++k按照上面的循环方向,f(i, k - 1), 由于j是从小到大循环,因此 k - 1 < j, 因此求解f(i , j )时,f(i, k - 1) 已经求解,而i是从大到小循环,因此原创 2021-12-23 23:19:44 · 535 阅读 · 0 评论 -
全排列算法permutation
/* 用递归的方法实现全排列 基本思想如下: 简单来来说,就是枚举每一个位置上可能的数字。每次可以通过与其它位置的数字交换,从而都到一个新的排列。 例如,对于 ABC,一共有3个位置。对于位置1,可以与位置1交换(实际上就是保持当前元素不动),也可以位置2或者位置3进行交换。 交换之后,固定位置1,进而考虑位置2。同样,位置2,也可以保留不动,或者与位置3交换。(注意:位置2不再需要与位置1交换了, 因为位置1之前与位置交换过了) 到了位置3,就保留不动原创 2021-08-24 19:05:36 · 599 阅读 · 0 评论 -
KMP算法详解,再看不懂打死我算了
用于字符串匹配的KMP算法,算是我见过最难理解的算法之一。为了看懂这个算法,花了不少时间,查了不少资料。现在整理如下,希望对大家理解这个算法有帮助。1、前缀与后缀最大公共子串长度前缀与后缀最大公共子串的长度(后面为了方便,简称最大子串长度),是KMP算法的一个关键的概念,而求解最大子串长度也是KMP算法中最关键、最难理解的一步。对于字符串中的任意一个字符j,,如果如果前缀 [0, k-1] 与后缀 [j-k, j-1]完全相同,那么公共子串长度就是k。如果存在多个这样的k,那么最大的就是最大子串长度。原创 2021-04-14 14:02:59 · 1283 阅读 · 1 评论 -
不使用算术运算符计算两数之和
计算两个数之和,本来是一件小学生就会做的事,不对,幼儿园学生都会!可是偏偏有些面试官,要求计算两个数之和不能用加号“+”,这不是故意刁难人嘛。可是为了offer,还是得硬着头皮去做。今天就谈一谈怎么在不使用四则运算符号的前提下做加法。虽然我们人做四则运算喜欢使用算术运算符,可是计算机呢?对计算机而言,一切皆是一串二进制的数。既然是二进制数,每个bit就可以通过:& (与)、^(异或)、<<(移位)等进行运算。最简单的集中情况:于是,聪明的你很快就能想到(想不到也没办法~)上面的原创 2020-10-12 23:11:47 · 724 阅读 · 0 评论