![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法导论
gfnbijsda
这个作者很懒,什么都没留下…
展开
-
【算法导论】写在前面的话
【算法导论】写在前面的话标签(空格分隔):【算法导论】从去年考完研到现在,刷了约600道算法题,很多题目熟练到用固定套路解决,但是面对一些问题,还是力不从心。这次趁着兼职上班划水之际,再加上刚换了个iPad Pro, 画图也方便一点,自己准备过一遍算法导论。由于之前一直用C++,现在想熟悉了Python,因此代码全部用 Python 实现。不知道能不能看完,尽力吧。我的微信公众号...原创 2019-08-04 19:43:25 · 152 阅读 · 0 评论 -
【算法导论】堆排序
什么是排序?考虑对于给定输入的某一个数组 A={a1,a2,...,an}A = \{a_1, a_2,..., a_n\}A={a1,a2,...,an}, 经过排序算法,我们可以得到原始排列的一个序列A={a1′,a2′,...,an′}A=\{a_1^{'}, a_2^{'},..., a_n^{'}\}A={a1′,a2′,...原创 2019-08-10 22:02:16 · 405 阅读 · 1 评论 -
【算法导论】快速排序
什么是排序?考虑对于给定输入的某一个数组 A={a1,a2,...,an}A = \{a_1, a_2,..., a_n\}A={a1,a2,...,an}, 经过排序算法,我们可以得到原始排列的一个序列A={a1′,a2′,...,an′}A=\{a_1^{'}, a_2^{'},..., a_n^{'}\}A={a1′,a2′,...原创 2019-08-14 20:46:14 · 219 阅读 · 0 评论 -
【算法导论】算法分析:递归式的三种求解方法
【算法导论】算法分析:递归式的三种求解方法标签(空格分隔):【算法导论】在分治策略中,为了确定算法的运行时间,需要求解递归式。本文给出三种求解递归式的方法:代入法:猜测一个界,然后使用数学归纳法证明这个界的正确性。递归树法:将递归式转换一棵树,其结点表示不同递归调用产生的代价。然后采用边界和技术来求解递归式。主方法:对于形如 T(n)=a(Tn/b)+f(n)T(n) = a(Tn...原创 2019-08-07 14:11:27 · 4621 阅读 · 0 评论 -
【算法导论】生日悖论
生日悖论问题:不考虑出生年份,问:一个房间中至少多少人,才能使其中两个人生日相同的概率达到50%?解: 假设一年有 n 天,屋子中有 k 人,用整数 1, 2, …, k 对这些人进行编号。假定每个人的生日均匀分布于 n 天之中,且两个人的生日相互独立。则,设 k 个人生日互不相同为事件A, 则事件 A 的概率为:P(A)=nn∗n−1n∗...∗n−k+1nP(A) = \frac{n}...原创 2019-08-09 14:07:29 · 2186 阅读 · 0 评论 -
【算法导论】strassen算法:比较快的矩阵乘法算法
【算法导论】strassen算法:比较快的矩阵乘法算法标签(空格分隔):【算法导论】考虑两个 n 级矩阵 A, B, 矩阵 C = A * B. 则有cij=∑k=1naij∗bkjc_{ij} = \sum_{k=1} ^n a_{ij}*b_{kj}cij=∑k=1naij∗bkj.对于两个矩阵相乘的问题,我们给出三个解决办法:迭代算法、简单分治算法、strassen分治算法。...原创 2019-08-07 10:51:28 · 2070 阅读 · 1 评论 -
【算法导论】雇佣问题
首先介绍一点数学知识。事件 A 的指示器随机变量I{A}I\{A\}I{A}定义为:I{A}={1如果A发生0如果A不发生 I\{A\} = \begin{cases}1 \quad 如果A发生\\0 \quad 如果A不发生\end{cases} I{A}={1如果A发生0如果A不发生指示器随机变量的期望为:E[I{A}]=Pr{A}E[I\{A\}] = Pr\{A\}E[I{...原创 2019-08-08 20:56:39 · 2309 阅读 · 0 评论 -
【算法导论】最大子数组问题的三种解法
【算法导论】最大子数组问题的三种解法标签(空格分隔):【算法导论】首先补充两个数学公式:alogbc=clogbaa^{log_bc} = c^{log_ba}alogbc=clogbalog(n!)=Θ(nlogn)log(n!) = \Theta(nlogn)log(n!)=Θ(nlogn)什么是最大子数组问题?给定一数组A, 寻找A中和最大的非空连续子数组。例如:...原创 2019-08-06 18:46:07 · 797 阅读 · 0 评论 -
【算法导论】归并排序
【算法导论】归并排序标签(空格分隔):【算法导论】什么是排序?考虑对于给定输入的某一个数组 A={a1,a2,...,an}A = \{a_1, a_2,..., a_n\}A={a1,a2,...,an}, 经过排序算法,我们可以得到原始排列的一个序列A={a1′,a2′,...,an′}A=\{a_1^{'}, a_2^{'},..., a_n...原创 2019-08-05 11:03:15 · 237 阅读 · 0 评论 -
【算法导论】插入排序
【算法导论】插入排序标签(空格分隔):【算法导论】什么是排序?考虑对于给定输入的某一个数组 A={a1,a2,...,an}A = \{a_1, a_2,..., a_n\}A={a1,a2,...,an}, 经过排序算法,我们可以得到原始排列的一个序列A={a1′,a2′,...,an′}A=\{a_1^{'}, a_2^{'},..., a_n...原创 2019-08-04 20:44:20 · 148 阅读 · 0 评论 -
【算法导论】优先队列
堆的应用:优先队列。什么是优先队列?优先队列是一种从来维护一组由元素构成的集合S的数据结构,其中每一个元素都一个值,被称为关键字。优先队列可以用堆来实现。优先队列可以分为最大优先队列、最小优先队列。最大优先队列支持的操作有:1. insert; 2. maximum; 3. extract_max; 4. incease_key;(由最大堆实现).由于使用堆实现优先队列,这里先给出...原创 2019-08-12 22:34:17 · 281 阅读 · 0 评论