图解算法
数学编程
毕业于陕西师范大学物理学专业,毕业后先后从事Python开发,数据挖掘和自然语言处理工作。目前专注深度学习和自然语言处理。
展开
-
图文讲解Huffman树
本文通过图文介绍Huffman树的构成,重点在于理解Huffman树的形成原理,另外给出Huffman树的参考代码。之后通过文本压缩的例子来介绍Huffman编码,本文将从以下几个方面来介绍:什么是Huffman树案例介绍Huffman树的构成Huffman编码Huffman编码的应用什么是Huffman树Huffman树是一种树状的数据结构。任何一种数据结构都是用来解决特定的问题,那么首先我们先来弄出清楚Huffman树解决什么样的问题?现在有一些不同数值的节点(图中蓝色),要把这些节原创 2020-08-03 14:37:29 · 1358 阅读 · 0 评论 -
堆的实现与TopK问题
喜欢我的文章,欢迎关注个人公众号:数学编程在《图文讲解堆排序》中介绍了堆数据的基本概念以及存储方法,同时也介绍了其应用就是堆排序。虽然堆的概念相对简单,代码的实现具有学习意义。本文重点介绍最小堆的实现,再介绍一种堆的应用,解决TopK问题。Talk is cheap, Show me the code很多时候原理简单,代码的实现并非如此,下面就重点解读一下代码。本文代码参考heapq.py源码最小堆的实现首先来看一下最小堆的抽象数据类型(Abstract Data Type, ADT),用.原创 2020-07-30 15:30:04 · 412 阅读 · 0 评论 -
图文讲解堆排序
喜欢我的文章,欢迎关注个人公众号:数学编程以前面试的时候碰到过问堆数据结构的,当时对数据结构了解太少,没能回答上来,可能因此错过了一次非常好的机会。从那以后一直在补基础知识,今天就全面总结一下堆以及堆的应用。这里你需要一些树数据结构的基础知识。介绍数据结构-堆把稻谷堆在地上就形成了堆,堆的结构非常清楚,上面小下面大,这样的堆称为小顶堆(又称作最小堆)。最小堆在数据结构中是这样定义的父节点的值恒小于等于子节点的值,此堆称为最小堆,那么大顶堆就是父节点的值恒大于等于子节点的值1。堆是一种树状的数据结原创 2020-07-28 16:49:40 · 195 阅读 · 0 评论 -
图文讲解冒泡排序
喜欢我的文章欢迎关注微信公众号:数学编程冒泡排序算法是一种非常基础的排序算法,算法的原理相对简单,同时也是稳定的排序算法,算法的时间复杂度为o(n2)o(n^2)o(n2),另外还是一种原地排序。比较适用于小规模数据的排序。解释一下概念:排序算法的稳定性是指两个相等的元素排序以后相对位置不发生变化,则认为是稳定的排序算法的时间复杂度是指随着问题规模的增加,理论执行时间的变化趋势。比如o(n)o(n)o(n)是指随之问题规模的增加,理论执行时间是线性递增的。放在排序问题中就是随着数据个数增加,排.原创 2020-07-27 14:51:34 · 213 阅读 · 0 评论 -
图文讲解归并排序
在日常生活中有很多排序例子。比如说排队,就是按照时间的先后顺序;医院就医,紧急情况下会按照病情的严重程度;高考录取通常是按照分数的高低。从这些例子中似乎看不出排序算法的必要性。事实上并不是,就说高考的问题吧,全省的考生排名,假如全省有30万考生,该如何高效的排名呢?这就需要排序算法了。介绍归并排序(英语:Merge sort),是创建在归并操作上的一种有效的排序算法,效率为O(nlogn)O(n\log n)O(nlogn)。1945年由约翰·冯·诺伊曼首次提出。该算法是采用分治法(Divide an原创 2020-07-24 22:28:09 · 340 阅读 · 0 评论