
算法
JeremiahSu
这个作者很懒,什么都没留下…
展开
-
动态规划
1.基本思想若要解一个给定问题,我们需要解其不同部分(即子问题),再合并子问题的解以得出原问题的解。 通常许多子问题非常相似,为此动态规划法试图仅仅解决每个子问题一次,从而减少计算量: 一旦某个给定子问题的解已经算出,则将其记忆化存储,以便下次需要同一个子问题解之时直接查表。 这种做法在重复子问题的数目关于输入的规模呈指数增长时特别有用。 tips:分治法的主要区别 关键在于分解出来的各原创 2015-09-14 20:35:33 · 615 阅读 · 0 评论 -
算法设计_动态规划
基本概念动态规划应用于子问题重叠的情况,即不同的子问题具有公共的子子问题,动态规划算法对于每个子子问题只求解一次,并将其保存,避免了重复的计算。 动态规划算法设计的四个步骤: 1.刻画一个最优解的结构特征。 2.递归地定义最优解的值。 3.计算最优解的值通常采用自底向上的方法。 4.利用计算出的信息构造一个最优解。典型问题1.钢条切割问题给定一段长度为n英寸的原创 2016-02-05 12:20:01 · 635 阅读 · 0 评论 -
经典面试问题
1.对上万个员工的年龄进行排序,时间复杂度不超过O(n),空间复杂度为常数级别(特点:带排序的值有一个范围)void sortAge(int age[],int length){ const int oldestage = 99; int timeAge [oldestage + 1]={0}; //第i个位置存i岁的人的个数 for(int i = 0;i<length原创 2015-09-22 21:33:48 · 455 阅读 · 0 评论 -
随机化算法
在算法中使用了随机函数,且随机函数的返回值直接或者间接的影响了算法的执行流程或执行结果。随机化算法基于随机方法,依赖于概率大小。分类数值随机化算法:数值概率算法常用于数值问题的求解。这类算法所得到的往往是近似解。而且近似解的精度随计算时间的增加不断提高。在许多情况下,要计算出问题的精确解是不可能或没有必要的,因此用数值概率算法可得到相当满意的解。蒙特卡罗(Monte Carlo)算法:蒙特卡罗(Mo转载 2015-09-21 21:55:48 · 843 阅读 · 0 评论 -
分支界限法
采用广度优先产生状态空间树的结点,并使用剪枝函数的方法称为分枝限界法。所谓“分支”是采用广度优先的策略,依次生成扩展结点的所有分支(即:儿子结点)。 所谓“限界”是在结点扩展过程中,计算结点的上界(或下界),边搜索边减掉搜索树的某些分支,从而提高搜索效率。分支限界法与回溯法 1)求解目标:回溯法的求解目标是找出解空间树中满足约束条件的所有解,而分支限界法的求解目标则是找出满足约束条件的一转载 2015-09-18 21:50:08 · 2755 阅读 · 0 评论 -
回溯法
回溯法是一种选优搜索法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择。解空间树例.旅行售货员问题。某售货员要到若干城市去推销商品,已知各城市之间的路程(旅费),他要选定一条从驻地出发,经过每个城市一遍,最后回到驻地的路线,使总的路程(总旅费)最小。 子集树与排列树:子集树:当所给的问题是从n个元素的集合S中找出满足某种性质的子集时,相应的解转载 2015-09-18 16:59:30 · 524 阅读 · 0 评论 -
排序相关代码
直接插入排序void insert_sort(int a[],int n/*元素个数*/){ int temp; for(int i =1;i < n; ++i){ temp = a[i]; for(j = i-1;j>=0 && temp < a[j];j--){ //查找插入的位置 a[j+1] = a[j];原创 2015-09-17 14:47:35 · 304 阅读 · 0 评论 -
排序总结
冒泡排序算法思想先从数组的第一个元素开始,一次比较相邻的两个元素,若前者比后者大则交换两个数的位置,然后处理下一对,依次类推,不断处理数组;选择排序:线性逐一扫描数组中的元素,从中挑出最小的元素将其插入已经排好序的序列中,再次从未排序列中选出最小的元素插入到已经有序序列的末尾。插入排序之直接插入:逐个将数组中的数据插入到有序表中插入排序之折半插入将数据插入到有序表中的时候采用二分查找的方式确定新来元原创 2015-09-08 19:28:07 · 530 阅读 · 0 评论 -
贪心算法
1.基本思想贪心算法总是作出在当前看来最好的选择。也就是说贪心算法并不从整体最优考虑,它所作出的选择只是在某种意义上的局部最优选择。当然,希望贪心算法得到的最终结果也是整体最优的。虽然贪心算法不能对所有问题都得到整体最优解,但对许多问题它能产生整体最优解。如单源最短路经问题,最小生成树问题等。在一些情况下,即使贪心算法不能得到整体最优解,其最终结果却是最优解的很好近似。2.基本要素1.贪心选择性质。原创 2015-09-14 16:14:34 · 521 阅读 · 0 评论