时间复杂度: 首先要说的是,时间复杂度的计算并不是计算程序具体运行的时间,而是算法执行语句的次数。 当我们面前有多个算法时,我们可以通过计算时间复杂度,判断出哪一个算法在具体执行时花费时间最多和最少。 常见的时间复杂度有: 常数阶O(1), 对数阶O(log2 n), 线性阶O(n), 线性对数阶O ...
分类:
其他好文 时间:
2018-07-14 14:53:44
阅读次数:
217
有N件物品和一个容量为C的背包,第i件物品的费用是c[i],价值是w[i],求将若干件物品放入背包所能够获得的最大价值。 每种物品只有一件,可以选择放或者是不放 使用f(i,v)表示前i件物品恰好放入一个容量为v的背包所能获得的最大价值 状态转移方程: 时间复杂度为O(N*V),空间复杂度可以优化为 ...
分类:
其他好文 时间:
2018-07-14 10:20:37
阅读次数:
151
注: 时间复杂度: 完成一个程序所需要的时间; 空间复杂度: 完成一个程序所需要的内存大小; 1.冒泡排序: 两两比较,如果前一个比后一个大,则互换位置,每次循环比较后,最后一个永远是最大的,下一轮比较,它就不参与了。 eg: function sort(array){ for(var i = 0; ...
分类:
编程语言 时间:
2018-07-08 15:37:02
阅读次数:
139
算法和算法分析 1、算法设计的要求: 1、 正确性(无歧义) 2、 可读性(算法主要为了人与人交流,晦涩难懂的程序易于隐藏错误,难调试和修改) 3、 健壮性(当输出非法数据、处理方法应当是返回一个表示错误或错误性质的值,而不是打印错误信息或异常,并中止程序的运行,以便在更高的抽象层次上进行处理) 4 ...
分类:
其他好文 时间:
2018-07-07 13:44:01
阅读次数:
118
|算法|最坏复杂度|平均复杂度|最好复杂度|空间复杂度|稳定性| | | | | | | |选择排序|O($n^2$)|O($n^2$)|O($n^2$)|O(1)|不稳定| |插入排序|O($n^2$)|O($n^2$)|O($n$)|O(1)|稳定| |希尔排序|O($nlog(n))$~O($ ...
分类:
编程语言 时间:
2018-07-07 12:43:33
阅读次数:
203
前半部分是简介, 后半部分是案例 KNN近邻算法: 简单说就是采用测量不同特征值之间的距离方法进行分类(k-Nearest Neighbor,KNN) 优点: 精度高、对异常值不敏感、无数据输入假定 缺点:时间复杂度高、空间复杂度高 1、当样本不平衡时,比如一个类的样本容量很大,其他类的样本容量很小 ...
分类:
编程语言 时间:
2018-07-06 22:25:59
阅读次数:
200
数组 数组存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O(1);数组的特点是:寻址容易,插入和删除困难; 链表 链表存储区间离散,占用内存比较宽松,故空间复杂度很小,但时间复杂度很大,达O(N)。链表的特点是:寻址困难,插入和删除容易。 哈希表 那么我们能不能综 ...
分类:
编程语言 时间:
2018-07-06 15:50:15
阅读次数:
207
动态规划 空间复杂度 min(O(m),O(n)) python 代码 ...
分类:
其他好文 时间:
2018-07-05 00:32:53
阅读次数:
205
问题1:找硬币,换钱的方法 输入: penny数组代表所有货币的面值,正数不重复 aim小于等于1000,代表要找的钱 输出:换钱的方法总数 解法1:经典dp,空间复杂度O(n*aim) 解法2:与上面的问题一样,只不过在求dp时只使用1维数组来做;使用迭代,时间复杂度一样: 问题2:跳台阶问题: ...
分类:
编程语言 时间:
2018-07-04 21:06:36
阅读次数:
300
问题 有0-n这n+1个数,但是其中丢了一个数,请问如何找出丢了哪个数? 五种方法 1)用1+2+...+n减去当前输入数据的总和。时间复杂度:O(n) 空间复杂度:O(1) 【容易溢出】 2)用12...*n除以当前输入数据的总积。时间复杂度:O(n) 空间复杂度:O(1) 【容易溢出】 3)用1 ...
分类:
编程语言 时间:
2018-07-02 21:29:06
阅读次数:
151