Emmmm...《算法导论》第30章摘抄+读书笔记+读后感... 去读算导吧, 书中自有黄金屋... ...
分类:
其他好文 时间:
2018-02-07 21:30:04
阅读次数:
190
任何比较排序在最好情况下都要经过Ω(nlgn),即比较排序的下界为Ω(nlgn)。 合并排序和堆排序都是渐进最优的。 要突破Ω(nlgn),就要进行非比较排序。计数排序、基数排序和桶排序都有非比较的一些操作来确定排序顺序,它们可以达到线性运行时间。 这三种排序都是以空间换时间。应用的不广,先不细看了 ...
分类:
编程语言 时间:
2018-02-06 01:26:19
阅读次数:
167
一、电子围栏定位算法: 还是决定不做定位算法了,原因有下: 1.文献[1]中利用线性算法解决了TDOA问题(四个观测点以上),文献[2]中将AOA算法的形式也纳入进来。多个直线的交点就是待测点的位置。如果考虑单点是否在围栏内部,之前做的假设是,定位单点的算法复杂度高,但这两篇文献中说明的是:理论上是 ...
分类:
编程语言 时间:
2018-02-04 22:55:39
阅读次数:
380
(第一段日常扯蛋,大家不要看)这几天就要回家了,osgearth暂时也不想弄了,毕竟不是几天就能弄出来的,所以打算过完年回来再弄。这几天闲着也是闲着,就掏出了之前买的算法导论看了看,把二叉搜索树实现了下。 ...
分类:
其他好文 时间:
2018-02-02 18:36:33
阅读次数:
182
重读算法导论之算法基础 插入排序 ? 对于少量数据的一种有效算法。原理: 1. 整个过程中将数组中的元素分为两部分,已排序部分A和未排序部分B 2. 插入过程中,从未排序部分B取一个值插入已排序的部分A 3. 插入的过程采用的方式为: 依次从A中下标最大的元素开始和B中取出的元素进行对比,如果此时该 ...
分类:
编程语言 时间:
2018-01-29 21:35:19
阅读次数:
278
6.1-1 在高度为 h 的堆中,元素最多有 2h+1 - 1 个,最少有 2h 个。注意算法导论里的高度是指深度,从 0 开始而不是从 1 开始。 6.1-2 这很好想,但是不好证明。 由已知高度为 h 的堆,它的元素个数满足 2h <= n <= 2h+1 - 1 ,解出 lg(n+1) - 1 ...
分类:
编程语言 时间:
2018-01-27 11:42:24
阅读次数:
206
堆排序结合了插入排序和归并排序的有点:它空间复杂度是O(1), 时间复杂度是O(nlgn). 要讲堆排序,先讲数据结构“堆” 堆: 堆是用数组来存放一个完全二叉树的数据结构。假设数组名是A,树的根节点存放在A[1]。它的左孩子存放在A[2],右孩子存放在A[3] 即:对于某个下标位i的节点,它的左孩 ...
分类:
编程语言 时间:
2018-01-23 22:09:21
阅读次数:
219
本篇博客中题目的代码均位于文末,文中不再出现 算法原理 "%%%Miskcoo%%%" 对于快速傅里叶变换的原理,可以参考上面的博客以及《算法导论》 大体说明 FFT用于加速多项式的乘法: $$H(x)=f(x) \otimes g(x)$$ 即: $$H(t)=\sum^{t}_{k=0}f(k) ...
分类:
其他好文 时间:
2018-01-21 13:47:51
阅读次数:
462
分治策略:将原问题划分成n个规模较小而结构与原问题相似的子问题,然后递归地解决这些子问题,最后再合并其结果,就可以得到原问题的解。 它需要三个步骤: 通过分治策略和分治步骤,可以简单地默出归并算法。 对于merge函数中的合并过程,有必要也用循环不变式来分析一下: 循环中不变的量是a[left... ...
分类:
编程语言 时间:
2018-01-21 01:16:35
阅读次数:
243
本章的重点是循环不变式。也就是在一个循环中存在着某些不变的量。它类似于数学归纳法的归纳步骤: 我们在设计一个算法、分析一个算法的时候,要适当应用循环不变式来简化分析工作、证明算法的正确性。 书中举例插入排序: n个元素的待排序数组A,下标是从1到n。 j从2开始一直遍历到大于n(此时会退出循环)。循 ...
分类:
编程语言 时间:
2018-01-21 01:12:06
阅读次数:
174