冒泡排序算法是一种较为简单的并且稳定的排序算法,该算法的时间复杂度最好为O(n),最差时为O(n^2),需要的空间复杂度为O(1)。 这里的算法稳定性是指 经过排序后,各元素仍然能保持它们在排序之前的相对次数,就称该算法是稳定的,反之,则为不稳定的。 例如,一组数排序前是a1,a2,a3,a4,a5 ...
分类:
编程语言 时间:
2017-11-03 13:11:58
阅读次数:
212
1.严格使用缩进来体现代码的逻辑从属关系。 python对代码的缩进是硬性要求,这一点必须时刻注意。如果某个代码段的缩进不对,那么整个程序就是错的,要么是语法错误无法执行,要么是逻辑错误导致错误结果,而检查这样的错误会花费很多时间。 2.每个import语句只导入一个模块,最好按标准库、扩展库、自定 ...
分类:
编程语言 时间:
2017-11-01 14:51:53
阅读次数:
203
题目: 给定一个有序数组, 求它的元素的绝对值个数. 如数组[-3, -1, 0, 0, 2, 3, 5], 返回5. 分析: 第一种思路. 数组遍历一遍, 将每一个元素的绝对值放入一个Set里面, 最后求Set的大小. 这种方法虽然很简单, 但是空间复杂度不小, 为O(n). 那么能不能同样只遍历 ...
分类:
编程语言 时间:
2017-10-29 16:40:28
阅读次数:
182
核心代码 算法分析: 最好时间复杂度:O(n) 有序 平均时间复杂度:O(n^1.3) 最坏时间复杂度:O(n^2) 空间复杂度:O(1) 稳定性:不稳定 ...
分类:
编程语言 时间:
2017-10-28 12:57:33
阅读次数:
132
核心代码 算法分析: 最好时间复杂度:O(nlog2(n)) 平均时间复杂度:O(nlog2(n)) 最坏时间复杂度:O(nlog2(n)) 空间复杂度:O(1) 稳定性:不稳定 ...
分类:
编程语言 时间:
2017-10-27 20:39:09
阅读次数:
195
-定义: 在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化情况并确定T(n)的数量级,算法的时间复杂度,也就是算法的时间量度,记作:T(n)=O(f(n))。它表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐进时间复杂度,简 ...
分类:
编程语言 时间:
2017-10-27 18:34:02
阅读次数:
193
Sort a linked list in O(n log n) time using constant space complexity. 含义:为一个列表排序,要求空间复杂度为常量 思路:使用归并排序 ...
分类:
其他好文 时间:
2017-10-25 16:44:11
阅读次数:
88
树状数组的原理和实现 概念 树状数组或者二叉索引树也称作Binary Indexed Tree,又叫做Fenwick树;它的查询和修改的时间复杂度都是log(n),空间复杂度则为O(n),这是因为树状数组通过将线性结构转化成树状结构,从而进行跳跃式扫描。通常使用在高效的计算数列的前缀和,区间和。 其 ...
分类:
编程语言 时间:
2017-10-22 22:18:15
阅读次数:
226
核心代码 应用场合:排序的数据属于同一个范围之内,分配得非常密集,并且重复的次数很多。 算法分析: 最好时间复杂度:O(n) 平均时间复杂度:O(n) 最坏时间复杂度:O(n) 空间复杂度:O(n) 稳定性:不稳定 ...
分类:
编程语言 时间:
2017-10-22 21:00:28
阅读次数:
228
Sort a linked list in O(n log n) time using constant space complexity. 解题思路:归并排序的思想,空间复杂度其实是O(N)了 ...
分类:
其他好文 时间:
2017-10-22 00:10:02
阅读次数:
115