时间复杂度分析 大O表示法 O(1): Constant Complexity 常数复杂度 O(log n): Logarithmic Complexity 对数复杂度 O(n): Linear Complexity 线性时间复杂度 O(n^2): N square Complexity 平方 O( ...
分类:
其他好文 时间:
2020-02-27 01:13:10
阅读次数:
82
1.引子 1.1.为什么要学习数据结构与算法? 有人说,数据结构与算法,计算机网络,与操作系统都一样,脱离日常开发,除了面试这辈子可能都用不到呀! 有人说,我是做业务开发的,只要熟练API,熟练框架,熟练各种中间件,写的代码不也能“飞”起来吗? 于是问题来了:为什么还要学习数据结构与算法呢? #理由 ...
分类:
编程语言 时间:
2020-02-21 13:03:57
阅读次数:
114
平摊分析(Amortized Analysis) 参考链接:https://blog.csdn.net/Ying_Xu/article/details/51433497 1、聚类分析 2、记账方法 3、势能方法 其中的公式Ci表示为执行当前操作需要的花销 push操作:势能增加1,操作花销为1,因此 ...
分类:
其他好文 时间:
2020-02-04 23:24:50
阅读次数:
71
题目传送门 传送门 一个非常显然的想法是记录后面的值相邻两个之间在前面选了多少个数。 众所周知(比如我就不知道,我甚至以为它非常大),若干个和为 $n$ 的数的乘积最大为 $O(3^{n/3})$,最优方案是拆成若干个 3 和常数个 2。 然后 dp 即可。 时间复杂度 $O(n^23^{\frac ...
分类:
其他好文 时间:
2020-01-20 20:37:18
阅读次数:
182
复杂度分析(下) 继续上篇,这篇将介绍四个复杂度分析方面的知识点:最好情况时间复杂度、最坏情况时间复杂度、平均情况时间复杂度、均摊时间复杂度。 1.最好、最坏情况时间复杂度 我们以数组查找举例,遍历数组找指定元素,找到则立即返回该元素所在数组的下标位置,没找到则返回-1。代码比较简单我就不写出来了。 ...
分类:
其他好文 时间:
2020-01-01 19:06:56
阅读次数:
85
复杂度分析 衡量一个算法的执行效率需要使用复杂度分析 为什么需要复杂度分析? 单纯靠测试的方法来衡量算法的执行效率是不可靠的。因为在不同的机器环境下执行同样一段代码,结果可能会不同。测试数据也会影响测试结果,比如排序算法,运行不同量级的数据时,表现会不一样,比如对于小规模的数据排序,插入排序可能反倒 ...
分类:
其他好文 时间:
2019-12-29 12:51:07
阅读次数:
96
参考 https://cloud.tencent.com/developer/ask/112047 https://blog.csdn.net/chao2016/article/details/82425317 详细解析 数组 设置,在特定索引处检查元素:O(1) 搜索:O(n)数组是否未排序,O( ...
分类:
其他好文 时间:
2019-12-23 22:06:44
阅读次数:
183
[toc] 一 为什么需要复杂度分析 1. 测试结果非常的依赖测试环境 在不同的硬件环境,测试同样一份代码其效果是不一样的。那么复杂度分析具有成本低,效率高的特点。 2. 测试结果收到数据规模的影响很大 比如排序算法,对待排序的有序度不一样,排序的执行时间就很不一样。如果测试数据规模很小,测试结果也 ...
分类:
其他好文 时间:
2019-12-22 12:58:08
阅读次数:
152
[toc] 14.最长公共前缀 题目描述 编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。(所有输入只包含小写字母 a z ) 官方题解 水平扫描 解题思路 :将第一个字符串作为暂时的公共前缀,往后遍历,逐渐得到所有字符串的公共前缀。 复杂度分析 时间复杂度 : ...
分类:
其他好文 时间:
2019-12-21 22:54:22
阅读次数:
101
排序算法 1、基本介绍 ? 排序算法比较基础,但是设计到很多计算机科学的想法,如下: ? 1、比较和非比较的策略 ? 2、迭代和递归的实现 ? 3、分而治之思想 ? 4、最佳、最差、平均情况时间复杂度分析 ? 5、随机算法 2、排序算法的分类 算法分类 冒泡排序 (1)冒泡排序的介绍 ? 冒泡排序是 ...
分类:
编程语言 时间:
2019-12-09 01:23:47
阅读次数:
75