数据结构与算法
文章平均质量分 59
数据结构原理学习记录
工藤旧一
小米公司 搜索算法工程师
展开
-
算法岗常见面试题
https://blog.csdn.net/csdn_jiayu/article/details/88044108#comments原创 2020-04-12 22:43:20 · 394 阅读 · 0 评论 -
链表原理及其python实现
文章目录一、原理详解1、基本介绍2、链表的结构1、单向链表2、双向链表3、循环链表4、双向循环链表二、python实现1、单链表的Python实现1、代码部分2、代码测试2、双向链表的python实现一、原理详解1、基本介绍链表和数组同属于线性表,与数组不同的是,链表不必顺序存储,因此能够灵活利用计算机中的空间,并且链表在插入的时候可以达到O(1)的复杂度。有利必有弊,在查找一个节点或者访...原创 2020-04-08 15:51:37 · 825 阅读 · 0 评论 -
关于时间复杂度的一些个人理解
一、O()的提出我们需要用一个量化指标来衡量一段程序运行的时间快慢,但是相同的程序在一台老式电脑和一台服务器上的运行时间也是截然不同的。那么能不能设计一个指标来直观的表示相应程序的时间消耗,而不受外界运行环境的影响呢?基于这个想法,提出了用程序运行的基本运算次数来表征时间消耗。二、O()的最终形成在判断时间的消耗上,我们没有那么细致的比较要求,你只要告诉我大概的时间消耗就行了。这就像在...原创 2020-04-07 18:35:30 · 339 阅读 · 0 评论 -
普通队列、双端队列的原理详解及其python实现
文章目录一、原理详解一、原理详解队列(queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。队列是一种先进先出的(First In First Out)的线性表,简称FIFO。允许插入的一端为队尾,允许删除的一端为队头。队列不允许在中间部位进行操作!假设队列是q=(a1,a2,……,an),那么a1就是队头元素,而an是队尾元素。这样我们就可以删除时,总是从a1开始,而...原创 2020-04-07 15:23:09 · 1148 阅读 · 0 评论 -
栈的原理详解及其python实现
文章目录一、原理介绍1、基本介绍及特点二、python实现1、栈的实现2、代码测试3、其他注意事项(持续补充中...)一、原理介绍1、基本介绍及特点栈(Stack),也叫做堆栈, 是一种容器, 可存入数据元素、访问元素、删除元素。栈的特点只能允许在容器的一端(称为栈顶端指标top)进行加入数据(push)和输出数据(pop)的运算。没有了位置概念,保证任何时候可以访问、删除的元素都是此...原创 2020-04-06 15:08:01 · 1328 阅读 · 0 评论 -
十大经典排序算法原理详解及其Python实现
文章目录摘要一、插入排序1、算法思想:2、举例演示:3、python实现4、复杂度和稳定性二、选择排序1、算法思想2、特点3、python实现3、复杂度和稳定性三、冒泡排序1、算法思想2、python实现3、复杂度和稳定性四、快速排序1、算法思想2、python实现3、复杂度和稳定性五、归并排序1、算法思想2、python实现3、复杂度和稳定性六、希尔排序1、算法思想2、python实现3、复杂度...原创 2020-03-31 21:16:27 · 1510 阅读 · 0 评论 -
递归算法原理详解及Python实现
文章目录摘要一、递归算法原理1、先举一个例子说明一下递归的作用2、递归算法的思想3、为什么递归难理解4、递归的应用场景二、几个典型问题的python实现1、计算阶乘2、汉诺塔问题3、斐波拉切数列问题摘要对新手而言,递归及其衍生的动态规划可以说是最难理解的几个算法。在看别人的代码的时候又会发现别人几行代码就用递归解决了一个难题,但让自己写却死活写不出来。为什么会有这种反差呢?经过长时间的递归学...原创 2020-03-30 11:34:49 · 4006 阅读 · 2 评论 -
图(graph)原理详解及其python实现
一、图的概念和存储方法这篇博客写的非常详细,暂时没有想到什么要补充的,就把链接直接放在这吧,如果以后有补充,再将内容记录在这里吧。https://blog.csdn.net/qq_21201267/article/details/90758656二、BFS、DFS原理及python实现1、BFS(广度优先搜索)原理:其原理直白的说就是在搜索完第k层的节点之前,不会搜索第k+1层的节点的...原创 2020-03-29 21:15:35 · 2362 阅读 · 0 评论 -
字典树原理详解及其Python实现
一、原理详解1、初步介绍:字典树又名前缀树,Trie树,是一种存储大量字符串的树形数据结构,经常被搜索引擎系统用于文本词频统计。除此之外也常用于计算左右信息熵、计算点互信息。下图演示了一个保存了8个单词的字典树的结构,8个单词分别是:“A”, “to”, “tea”, “ted”, “ten”, “i”, “in”, “inn”。2、优势:利用字符串的公共前缀来减少查询时间,最大限度...原创 2020-03-28 21:02:24 · 2320 阅读 · 1 评论 -
简单粗暴地理解动态规划
动态规划可以说是做题时比较难以理解的算法了,我之前也不是很理解,直到在随机过程中学习了马尔科夫过程后,再看动态规划就觉得很简单了。本文只是帮助简单粗暴的理解动态规划,熟练地运用需要亲自进行大量的习题练习。一、动态规划适合解决什么样的问题?1、问题具有最优子结构举一个直白易懂的例子:求你走路的时候迈三步能走出的最大距离。如果你想三步走过距离最大,那你每一步都应该很大,在这三步走的过程中,迈出...原创 2020-03-25 22:12:40 · 148 阅读 · 0 评论 -
数组原理详解及python语法实现
一、基本特点1、数组(Array)是一种线性表数据结构。说到这里,就先介绍一下线性表和非线性表:线性表就是数据排成一条线一样的数据结构,每个线性表最多只有前后两个方向,常见线性表数据结构有:数组、链表、队列、栈。非线性表与线性相对立,在非线性表中,数据之间并不是简单的前后关系,常见数据结构有:二叉树、堆等。数组作为典型的线性表数据结构,其用一组连续的内存空间,来存储一组具有相同类型的数据...原创 2020-03-23 09:18:56 · 790 阅读 · 0 评论 -
字符串原理详解及Python语法实现
一、串的基本概念:串(String)——由零个或多个任意字符串组成的字符序列。记做:s =“a1a2…an”,其中,s是串名。a1(1<=i <=n)是一个任意字符,i是该元素在整个串中的序号;n为串的长度,表示串中所包含的字符个数,当n=0时,称为空串。子串和主串——串中任意连续的字符组成的子序列称为该串的子串;包含子串的串相应地称为主串。子串的位置——子串的第一个字符在主...原创 2020-03-16 20:08:29 · 425 阅读 · 0 评论 -
二叉树原理详解
一、 树的相关名词根节点——一棵树最上方的结点结点的度——结点拥有的子树的数目(eg上图B的度为1)。叶子结点——度为0的结点(不为0的称为分支结点)。树的度——树中结点的最大的度层次——根结点的层次为1,其余结点的层次等于该结点的双亲结点的层次加1树的高度——树中结点的最大层次森林——0个或多个不相交的树组成。对森林加上一个根,森林即成为树;删去根,树即成为森林。二、二叉树二叉...原创 2020-03-10 16:23:31 · 4670 阅读 · 0 评论 -
Hash表原理详解
Hash(散列)表一、优势:Hash函数可以通过key直接查找并确定值所在位置,而不需要像二叉树那样从根节点开始逐个比较排查。二、Hash函数构造方法:1、直接定制法——仅适用于地址大小=关键字的情况该方法构造的Hash函数为线性函数, H(key)=a*key+b。例如统计某地区某年龄的人数:需要查找哪个年龄的人数,就直接找对应的就行。这种哈希函数构造简单,且不会产生哈希冲突(后...原创 2020-03-09 15:06:38 · 1004 阅读 · 0 评论