算法导论
文章平均质量分 73
lim要不断刷新lim
这个作者很懒,什么都没留下…
展开
-
递归详解
递归详解原创 2015-07-26 15:09:45 · 787 阅读 · 0 评论 -
递归:解决汉诺塔问题(数据结构3.2 P103)
关于汉诺塔问题我思考了一段时间。最后总结原因之前想不明白还是对递归问题没有深入理解。我的另一篇博文《递归详解》已经很好的介绍了递归的原理。分析汉诺塔问题:由以下三步组成1 用C做过度,将A柱上的n-1个盘子直接移到C柱上2 将A柱上的最后一个盘子移动到C柱上。3 用A做过度,将B柱上的n-1个盘子直接移到C柱上由此将移动n个盘子的汉诺塔问题归结为移动n-1原创 2015-07-26 16:31:08 · 1696 阅读 · 0 评论 -
堆的应用
第一个是ali的面试题:第一题是本周淘宝上有5亿个商品成交数据,让你找出销量最高的10000个商品。直接想起来优先队列也就是堆。从而引出堆的一个重要的应用------大数据原创 2015-08-07 13:59:31 · 440 阅读 · 0 评论 -
快速排序解析
快速排序法原理也是用了分治法,主要原理是将数组分为A[p..q-1] 和A[q+1..r],然后调整元素使得A[p..q-1]小于等于q,也小于等于A[q+1..r]。然后不断的递归,到最后就排序完成。上代码:[cpp] view plaincopy// QuickSort.cpp : 定义控制台应用程序的入口点。 //转载 2015-07-28 09:39:32 · 312 阅读 · 0 评论 -
算法导论实验:第二章插入排序 P10
#include using namespace std; int main() { int A[5]={2,6,3,5,1}; int i,j; int a; for (j=1;j<5;++j) { a=A[j]; i=j-1; while (i>=0&&A[i]>a) { A[i+1]=A[i]; i=i-1; } A[原创 2015-07-23 11:49:04 · 368 阅读 · 0 评论 -
第二章 习题2.1-3 查找线性表
查找线性表#include using namespace std; int main() { int A[5]={2,6,3,5,1}; int v=7; for (int i=0;i<6;++i) { if (i==5) { cout<<"v=null"<<endl; } else if (i<5&&A[i]==v) { cout<<i<<en原创 2015-07-23 12:11:09 · 390 阅读 · 0 评论 -
动态规划
动态规划的本质不在于是递推或是递归,也不需要纠结是不是内存换时间。动态规划是对于 某一类问题 的解决方法!!重点在于如何鉴定“某一类问题”是动态规划可解的而不是纠结解决方法是递归还是递推!怎么鉴定dp可解的一类问题需要从计算机是怎么工作的说起…计算机的本质是一个状态机,内存里存储的所有数据构成了当前的状态,CPU只能利用当前的状态计算出下一个状态(不要纠结硬盘之类的外部存储,就算考转载 2015-08-17 11:13:00 · 438 阅读 · 0 评论