
算法
xdhc304
这个作者很懒,什么都没留下…
展开
-
分治法、动态规划和贪心算法
分治法,动态规划法,贪心算法这三者之间有类似之处,比如都需要将问题划分为一个个子问题,然后通过解决这些子问题来解决最终问题。但其实这三者之间的区别还是蛮大的。1、分治法 分治法(divide-and-conquer):将原问题划分成n个规模较小而结构与原问题相似的子问题;递归地解决这些子问题,然后再合并其结果,就得到原问题的解。分治模式在每一层递归上都有三个步骤: 分解(Div原创 2017-11-26 10:36:13 · 697 阅读 · 0 评论 -
时间复杂度和空间复杂度
算法的时间复杂度和空间复杂度合称为算法的复杂度。 1.时间复杂度 (1)时间频度 一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了。并且一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。一个算法中的语句执行次数称为语句频度或时原创 2017-11-26 11:23:34 · 309 阅读 · 0 评论 -
最大公约数-辗转相除法
假设有两个数x和y,存在一个最大公约数z=(x,y),即x和y都有公因数z,那么x一定能被z整除,y也一定能被z整除,所以x和y的线性组合mx±ny也一定能被z整除。(m和n可取任意整数) 对于辗转相除法来说,思路就是:若x>y,设x/y=n余c,则x能表示成x=ny+c的形式,将ny移到左边就是x-ny=c,由于一般形式的mx±ny能被z整除,所以等号左边的x-ny(作为mx±ny的一个特例)就原创 2017-11-26 13:20:20 · 383 阅读 · 0 评论 -
给定数组,从数组中取出n个不复用的数的和为sum
问题描述: 实现一个函数,传3个参数,指定数组(有小数、正负数),n(取出个数),sum(指定和),输出是否能找到这几个数。 这和经典的凑硬币问题其实本质上是相同的,自然可以用动态规划来做,但这里我们先考虑用深度搜索来做做。 边界条件: sum=0&n=0,成功; n<=0,失败; n>0,继续搜索 因为数组中有正有负,所以sum只能用于最后的满足判断 function fin...转载 2019-02-15 11:10:11 · 2544 阅读 · 0 评论 -
js实现快速排序
var quickSort = function(arr) { if (arr.length <= 1) {//如果数组长度小于等于1无需判断直接返回即可 return arr; } var pivotIndex = Math.floor(arr.length / 2);//取基准点 var pivot = arr.splice(pivotIndex,...原创 2019-02-11 15:17:48 · 2254 阅读 · 2 评论 -
JS交换两个变量的值
let num1 = 5, num2 = 6; num1 = [num2, num2 = num1][0]; console.log(num1, num2);原创 2019-09-14 21:22:02 · 184 阅读 · 0 评论