之所以要分为四种复杂度分析,是因为在不同输入的情况下,复杂度量级有可能是不一样的。 ...
分类:
其他好文 时间:
2018-10-05 14:06:40
阅读次数:
191
复杂度分析是什么? 复杂度分析就是分析执行一个给定算法需要消耗的计算资源数量(例如计算时间,存储器使用等)的过程。 为什么要学习复杂度分析? 没有复杂度分析怎么得到算法执行的时间和占用的内存大小 把代码运行一遍,通过统计、监控,就能得到算法执行的时间和占用的内存大小。 该方法的缺点在于: 1、测试结 ...
分类:
编程语言 时间:
2018-10-05 14:00:39
阅读次数:
196
我们都知道,数据结构和算法本身解决的是“快”和“省”的问题,即如何让代码运行得更快,如何让代码更省存储空间。所以,执行效率是算法一个非常重要的考量指标。那如何来衡量你编写的算法代码的执行效率呢?这里就要用到我们今天要讲的内容:时间、空间复杂度分析。其实,只要讲到数据结构与算法,就一定离不开时间、空间 ...
分类:
编程语言 时间:
2018-09-29 01:18:20
阅读次数:
191
队列是一种先进先出的线性数据结构 1.队列的实现 实现队列 调用实例 2.数组队列的复杂度分析 3.数组队列的问题 循环队列 tail和front互相追赶着,这个追赶过程就是队列添加和删除的过程,如果tail追到front说明队列满了,如果front追到tail说明队列为空。 令队列空间中的一个单元 ...
分类:
其他好文 时间:
2018-08-18 00:51:28
阅读次数:
200
复杂度分析 莫队算法如果我们已知[l,r]的答案,能在O(1)时间得到[l+1,r]的答案以及[l,r-1]的答案,即可使用莫队算法。时间复杂度为O(n^1.5)。如果只能在logn的时间移动区间, 则时间复杂度是O(n^1.5*log n)。其实就是找一个数据结构支持插入、删除时维护当前答案。 这 ...
分类:
其他好文 时间:
2018-08-09 21:16:44
阅读次数:
157
素数的算法有很多种,现在主要讲两种算法及其改进版本的复杂度分析,解释性能提升的幅度。现以求100000内素数为例,两种算法分别是: 1.基础思路是去掉偶数,包括取模的范围,代码如下: print(2) foriinrange(3,100000,2): forainrange(3,int(i0.5)+1,2): ifi%a==0: break
分类:
编程语言 时间:
2018-08-05 17:26:39
阅读次数:
311
功能: 1.增、删、改、查 2.扩容、缩容 3.复杂度分析 4.均摊复杂度 5.复杂度震荡 分析动态数组的时间复杂度: 分析resize的时间复杂度: ...
分类:
编程语言 时间:
2018-07-04 23:38:08
阅读次数:
207
———————————————————————————————————————————— 解题过程: 1. 2. 3. ———————————————————————————————————————————— 复杂度分析: 1. 时间: 分析方法: 分析过程: 分类讨论: 空间: 分析方法: 分析过 ...
分类:
其他好文 时间:
2018-06-29 11:11:44
阅读次数:
148
以向量vector为例分析动态扩容算法设计和时间复杂度分析 扩容算法实现 如何实现扩容,新的容量取多少合适? 对于容器内部数据区为数组的容器来说,动态扩容是必须的,因为无法预测容器规模的增长,而且必须保证数据区不仅在逻辑上连续分布存储,循秩访问,更要保证其在物理地址上的连续,因此每次插入操作前都需要 ...
分类:
其他好文 时间:
2018-06-23 01:31:01
阅读次数:
197
第八章《排序》 一、直接插入排序 //(1)时间复杂度分析: // ①最坏情况(整个序列逆序):O(n²) // ②最好情况(整个序列有序):O(n) // ③平均时间复杂度:O(n²) //(2)空间复杂度分析: // ①:O(1) 二、折半插入排序 三、希尔排序 四、冒泡排序 五、快速排序 六、 ...
分类:
编程语言 时间:
2018-06-20 22:31:56
阅读次数:
248