
数据结构与算法
数据结构与算法
技术园地
这个作者很懒,什么都没留下…
展开
-
数据结构可视化神器推荐
数据结构可视化神器推荐原创 2023-02-14 08:34:40 · 415 阅读 · 0 评论 -
五种对称加密算法总结
1、DES已破解,不再安全,基本没有企业在用了是对称加密算法的基石,具有学习价值密钥长度56(JDK)、56/64(BC)2、DESede(三重DES)早于AES出现来替代DES计算密钥时间太长、加密效率不高,所以也基本上不用密钥长度112/168(JDK)、128/192(BC)3、AES最常用的对称加密算法密钥建立时间短、灵敏性好、内存需求低(不管怎样,反正就是好)实际使用中,使用工作模式为CTR(最好用BC去实现),此工作模式需要引入IV参数(16位的字节数组)密钥长度128/原创 2021-09-08 13:49:44 · 9511 阅读 · 0 评论 -
位运算符之左移右移(简单易懂)
前言:位运算符是用来对二进制位进行操作的c语言中有6种位运算符:& 按位与 [链接]: https://blog.youkuaiyun.com/weixin_42837024/article/details/98736834| 按位或 [链接]:https://blog.youkuaiyun.com/weixin_42837024/article/details/98745019^ 按位异或 [链接]:https://blog.youkuaiyun.com/weixin_42837024/article/details/98原创 2021-08-23 08:20:43 · 3285 阅读 · 1 评论 -
Java交换两变量值(三种方法)
1.中间变量(最普遍、最广泛使用的交换方式):这种方法很容易理解,就是创建temp中间变量,m把值给temp,n给m,temp将m的值给n,这样就实现了交换。2.加减运算(前提只能是数字)因为这种方法需要运算,所有只能是数字,eg:m=8,n=2;第一步求出两数的和为10,传给m,再用总数减去n就是原来m的值,传给n,然后总数再减去原来m的值,得到原来n的值,传给m,实现交换。3.异或运算(前提只能是整数):这种方法不常见到(但很重要、很猥琐、很魔幻,需铭记,是...原创 2021-08-22 18:04:51 · 5963 阅读 · 0 评论 -
与、或、非、与非、或非、异或、同或
数字逻辑电路中的逻辑运算法则首先把中文意思和英文简写一一作出对应:与:AND或:OR非:NOT与非:NAND或非:NOR异或:XOR同或:XNOR想要准确长久记住这些逻辑运算,有一个对应法则口诀:与:AND,有0出0,全1出1。如:1 AND 1 = 11 AND 0 = 00 AND 1 = 00 AND 0 = 0或:OR,有1出1,全0出0。如:1 OR 1 = 11 OR 0 = 10 OR 1 = 1.原创 2021-08-22 17:39:35 · 43236 阅读 · 0 评论 -
Graphviz 重复节点处理
如果想用graphviz中画一棵树,并且树中有重复节点。如下图,简单地用下面的代码是无法完成的。因为graphviz将string当作唯一id;digraph G{ A->B; A->C; B->C;}上述代码只能生成一个有向图,而不是树要生成一颗有重复节点的树,可以引入label,对于重复的节点,定义一个新节点;digraph G{ A->B; A->C; node1[label=C]; .原创 2021-08-19 08:47:46 · 990 阅读 · 0 评论 -
懒惰删除 概念
在计算机科学中,懒惰删除(英文:lazy deletion)指的是从一个散列表(也称哈希表)中删除元素的一种方法。在这个方法中,删除仅仅是指标记一个元素被删除,而不是整个清除它。被删除的位点在插入时被当作空元素,在搜索之时被当作已占据。示例// javascriptvar myarr=["frist","2nd","3rd","4th"];delete myarr[2]; // 删除第3个 "3rd"console.info(myarr);// 输出0: "frist"1: "2nd"原创 2021-08-17 08:16:14 · 1870 阅读 · 0 评论 -
堆、栈、堆栈、队列的区别
如果你学过数据结构,就一定会遇到“堆”,"栈","堆栈","队列",而最关键的是这些到底是什么意思?最关键的是即使你去面试,这些都还会问到,所以如果你不懂对你是损失很大的。 堆:什么是堆?又该怎么理解呢? ①堆通常是一个可以被看做一棵树的数组对象。堆总是满足下列性质: ·堆中某个节点的值总是不大于或不小于其父节点的值; ·堆总是一棵完全二叉树。 将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。常见的堆有二叉堆、斐波那契堆等。 ②堆是在程序运行时...原创 2021-08-15 16:19:50 · 712 阅读 · 0 评论 -
分治法的时间复杂度
分治法的时间复杂度为 nlogn归并排序的递归过程如下,该递归树的高度为log2n(计算过程:假设待排序的数组元素个数为n,设高度为x,x意味着n个元素需要连续二分x次才剩下1个元素,即n/2^x=1,x=log2n),每一层的总比较次数为n,所以时间复杂度为nlogn。快速排序的分析过程类似。快速排序的平均时间复杂度同样为nlogn。假设在平均情况下每次选取的基准值均为该数组的中间值,因此每次都将数组分成两半,直到分割到只剩一个元素。假设n个元素平分了x次后只剩1个元素,则n/2^x=1,x.原创 2021-08-15 14:38:44 · 9757 阅读 · 0 评论 -
二十世纪最伟大的十大算法
发明十大算法的其中几位算法大师一、1946 蒙特卡洛方法[1946: John von Neumann, Stan Ulam, and Nick Metropolis, all at the Los Alamos Scientific Laboratory, cook up the Metropolis algorithm, also known as the Monte Carlo method.]蒙特卡洛方法的应用场景很多,横跨物理、金融、计算机。拿计算机科学来举例,自然语言处理中的LD翻译 2021-08-09 08:44:08 · 884 阅读 · 0 评论 -
图的定义与术语总结
原创 2021-07-28 09:18:37 · 238 阅读 · 0 评论 -
完全二叉树
原创 2021-07-26 09:07:58 · 224 阅读 · 0 评论 -
算法时间复杂度计算
原创 2021-07-25 10:32:51 · 254 阅读 · 0 评论 -
常见的时间复杂度
原创 2021-07-25 10:23:32 · 217 阅读 · 0 评论 -
高斯算法概念
以首项加末项乘以项数除以2用来计算“1+2+3+4+5+···+(n-1)+n”的结果。这样的算法被称为高斯算法。高斯算法_百度百科原创 2021-07-25 09:52:03 · 6333 阅读 · 0 评论 -
学好算法,有三重境界
王国维先生在《人间词话》中写道:古今之成大事业、大学问者,必经过三种境界:“昨夜西风凋碧树。独上高楼,望尽天涯路。”此第一境也。“衣带渐宽终不悔,为伊消得人憔悴。”此第二境也。“众里寻他千百度,蓦然回首,那人却在,灯火阑珊处。”此第三境也。算法的学习之道也是如此。夯实根基在最初的阶段,算法世界的大门刚刚打开,这个时候迷茫是正常的,解决迷茫的要诀在于少想多做,勇往直前。怀着一颗"千磨万击还坚韧,任尔东西南北风"的恒心,爬上算法的高楼,做到"望尽天涯路"。从一个算法萌新入门,第一步便在于打牢根基原创 2021-07-25 09:33:50 · 418 阅读 · 1 评论 -
算法与数据结构学习路线
随着科学技术的发展,人工智能已经逐渐渗透到各个行业,这是一个相当有前景的专业领域。其中,算法工程师这一职位更是非常火爆,在急缺大量人才的同时,也吸引了众多求职者,那么,初学者该如何学好算法呢?算法工程师的具体分支:其次,算法工程师的必备技能:▲至少熟悉一门编程语言C++/C++/java/python/R;▲功底;熟练运用各种常用算法和数据结构,有独立的实现能力;▲熟悉数据挖掘算法;▲熟悉机器学习相关知识理论。▲加分项:具有较为丰富的项目实践经验。好奇的你看到这.原创 2021-07-24 20:21:06 · 2287 阅读 · 9 评论 -
二叉树前中后序遍历原理及示例
前中后序:前中后序都是从根开始把根结点分解成三个部分:输出该结点、访问该结点左孩子、访问该结点的右孩子;唯一的区别便是每个部分的前后顺序前序:输出该结点、访问左孩子、访问右孩子中序:访问左孩子、输出该结点、访问右孩子后序:访问左孩子、访问右孩子、输出该结点可以关注“输出该结点”这个部分的位置,在最前则为前序,在中间则为中序,后序以此类推;例题:前序顺序A-B-D-F-G-H-I-E-C中序顺序F-D-H-G-I-B-E-A-C后序顺序F-H-I-G-D-E原创 2021-07-19 20:49:05 · 604 阅读 · 2 评论 -
《算法第4版》与《算法导论》比较
个人认为:《算法第4版》这本书,比标准教材《算法导论》要好非常非常多。《算法导论》主要是探讨了如何在数学模型写一个漂亮的算法,老版还居然使用pseudo code。在学术上,毫无疑问《算法导论》更高。而此书,则在实际应用上比算法导论高。《算法导论》是我曾经学过的教材。学过算法导论以后在真实的工程上一个最起码的问题常常困惑我。就是这些伪代码,或者说C代码如何实施在高级语言Java(Python或者C#)上。而难点在于如下几点:1. 《算法导论》是基于伪代码或者C的。而C的容器是远远不及Java原创 2021-07-11 10:27:27 · 6996 阅读 · 0 评论 -
两矩阵相乘
https://baike.baidu.com/item/%E7%9F%A9%E9%98%B5%E4%B9%98%E6%B3%95/5446029?fr=aladdin原创 2021-06-28 22:52:13 · 944 阅读 · 0 评论