算法基础
文章平均质量分 60
高延君
这个作者很懒,什么都没留下…
展开
-
变治法应用之:堆排序算法详解
变治法的关键在于巧妙转换问题,不走常规路,如化未知为已知。堆排序的巧妙之处在于转换了数据结构。对一个普通的无序数组排序,我们知道有合并、快排等方法。但如果我们改变数组的结构,将其变成一个完全二叉树,就可以采取堆排序的方法。后面可以发现,采用堆排序的方法在实现找到、删去最大值、添加元素等操作上效率很高。因此,堆排序是变治法的一个成功实现。堆排序的数据结构基础是“堆”,而堆的本质结构是一个满足特定要求的完全二叉树。其特征为:1. 树的每一层都是满的,只有最后一层最右侧的元素可能缺位。2. 父节点一定大于子女原创 2021-01-03 19:28:37 · 960 阅读 · 1 评论 -
算法基本思想之时空权衡和利用已知输入信息:计数排序和桶排序
目录时空权衡思想计数排序原理过程代码实现桶排序时空权衡思想计数排序原理(分布)计数排序要求待排序数组A中的数是0-k之间的整数。且这个k已知。这个对输入分布的要求保证了:新数组的索引可以直接和原数组中的数字对应。这也就解释了为什么输入必须是整数,因为如果不是整数,没法对应新数组的索引。当然,如果实际有小数或负数,理论上也可以对数组进行线性变换都化成正整数再用计数排序。但这个过程的问题在于,需要决定进行什么线性变换,而决定的过程又取决于我们对输入数组已知的信息量。如果我们对输入数组一无所知,那必须要遍原创 2020-11-07 11:56:04 · 1447 阅读 · 0 评论 -
递归思想应用之合并排序——过程详解、时间复杂度和代码实现
目录递归形式合并排序基本思想:两组递归分解过程merge过程求解运行时间用递归树猜测复杂度递归形式递归形式是算法中常用到的一种构造思路。递归允许函数或过程对自身进行调用,是对算法中重复过程的高度概括,从本质层面进行刻画,避免算法书写中过多的嵌套循环和分支语法。因此,是对算法结构很大的简化。递归形式分为线性递归、二分递归、多分支递归等。将这些递归形式应用于算法中,就形成了遍历、减治、分治等算法策略。此处重点讨论分治法,并且仅关注分治法应用于排序问题中的一种经典算法:合并排序。合并排序基本思想:两组递原创 2020-10-10 15:38:20 · 3616 阅读 · 3 评论 -
线性回归损失函数构造:极大似然法和贝叶斯估计的视角
目录线性最小二乘法极大似然法估计估计思想线性回归中应用异方差情况贝叶斯估计贝叶斯公式最大后验估计线性最小二乘法极大似然法估计估计思想线性回归中应用异方差情况贝叶斯估计贝叶斯公式最大后验估计...原创 2020-10-06 11:50:34 · 2160 阅读 · 1 评论 -
算法基本思想之减治法(一):减一法及其应用(附算法效率度量)
插入排序算法介绍算法逻辑伪代码复杂度原创 2020-09-22 01:14:26 · 7646 阅读 · 0 评论 -
logistic回归为什么采用sigmoid函数——从广义线性函数推导
目录Logistic回归基本形式为什么采用sigmoid函数?广义线性模型Logistic回归基本形式为什么采用sigmoid函数?广义线性模型原创 2020-09-11 20:32:56 · 2040 阅读 · 1 评论