1什么是复杂度分析? 分别用时间复杂度(执行的快慢)和空间复杂度(内存的消耗 )两个概念来描述性能问题,二者统称为复杂度. 复杂度就是用来分析算法执行效率与数据规模之间增长关系。 2.为什么要进行复杂度分析? 1.和性能测试相比,复杂度分析有不依赖执行环境、成本低、效率高、易操作、指导性强的特点。2 ...
分类:
其他好文 时间:
2019-03-18 01:19:50
阅读次数:
197
0.经典快排:将数组最后位置的数值x作为划分值,将小于等于x的放在左边,大于x的放在右边, 让小于等于x区域的最后一个位置上放x值,如果有多个值等于x,中间区域放的什么值无所谓,左边区域最后一个数放x就可以,左边区域放小于等于x的值,右边放大于x的值,经典快排的时间复杂度和数据状况是有关系的。最好的 ...
分类:
编程语言 时间:
2019-03-05 09:34:22
阅读次数:
187
1.归并排序时间复杂度为O(N*logN),额外的空间复杂度O(N)。 2.递归行为:一个数组的排序,先将左侧部分排好序,然后将右侧部分排好序,最后整体利用外排序的方式整体排好。 3.归并排序:将两个(或者两个以上)有序表合并成一个新的有序表,即把待排序的序列分成若干个子序列,在把有序的子序列合并为 ...
分类:
编程语言 时间:
2019-03-03 22:30:12
阅读次数:
158
J我们知道学习数据结构与算法主要是解决一个「快」和「省」的问题,如何让代码执行更快、如何更节省空间。那么如何来考量你的代码的执行效率呢,我们总要有一个标准,这就是我今天所讲的复杂度分析,不夸张的说,掌握好复杂度分析,数据结构与算法你就掌握了一半,所有的算法都逃不出复杂度分析的范畴。 复杂度分析包括时 ...
分类:
编程语言 时间:
2019-02-18 17:26:18
阅读次数:
178
我们在list中插入数据时,经常使用这两个函数: append():在列表的末尾增加一个数据 insert():在某个特定位置前加一个数据 Python内的list实现是通过数组实现的,而不是链表的形式,所以每当执行insert()操作时,都要将插入位置的元素向后移动才能在相应的位置插入元素,执行a ...
分类:
编程语言 时间:
2019-01-15 19:36:20
阅读次数:
218
树状数组的问题模型: 现在有一个这样的问题: 有一个数组$a$,下标从$0$到$n 1$,现在你要进行$w$次修改,$q$次查询。 修改是修改数组中某一个元素的值; 查询是查询数组中任意一个区间的和,$w+q0) { res+=c[x]; x =lowbit(x); } return res; } ...
分类:
编程语言 时间:
2018-12-22 22:03:46
阅读次数:
261
18年互联网寒冬,特别是游戏行业,版号一年没发。待经济春暖花开之时,也让自己在行业行业中增加竞争力。 为什么要进行复杂度分析?1.和性能测试相比, 复杂度分析有不依赖执行环境、 成本低、 效率高、 易操作、 指导性强的特点。2.掌握复杂度分析, 将能编写出性能更优的代码, 有利于降低系统开发和维护成 ...
分类:
其他好文 时间:
2018-12-14 00:56:02
阅读次数:
133
https://www.cnblogs.com/gaochundong/p/complexity_of_algorithms.html https://www.zhihu.com/question/21387264 https://blog.csdn.net/zolalad/article/deta ...
分类:
其他好文 时间:
2018-12-10 18:01:18
阅读次数:
187
$Splay$的复杂度分析 不论插入,删除还是访问,我们可以发现它们的复杂度都和$splay$操作的复杂度同阶,只是一点常数的区别 我们不妨假设有$n$个点的$splay$,进行了$m$次$splay$操作 采用势能分析 我们记$w(x) = \left \lceil \log_2 (size(x) ...
分类:
其他好文 时间:
2018-12-08 11:34:42
阅读次数:
178
字符串的回文判断问题,由于字符串可随机访问,故逐个比较首尾字符是否相等最为便利,即常见的『两根指针』技法。此题忽略大小写,并只考虑字母和数字字符。 C++: JAVA: 源码分析 两步走: 字符的判断尽量使用语言提供的 API 复杂度分析 两根指针遍历一次,时间复杂度 O(n), 空间复杂度 O(1 ...
分类:
其他好文 时间:
2018-12-03 15:41:05
阅读次数:
213