问题如题目,首先分析,链表的反转的空间复杂度如果为常数级,那么不可能完成从堆中申请数据来完成链表的反转工作,所以问题就转化为了如何将原链表修改/拆解为逆置的链表:函数形式假定如下 voidInverse(List*&head)//////修改原链表为逆置第一种办法最简单,就是在创建一个局部变量 Li...
分类:
其他好文 时间:
2015-03-16 23:00:40
阅读次数:
191
1.直接插入排序
《算法导论》P10,《数据结构》P265
向已经排好序的数组a[1..j-1]插入a[j],进行一趟循环遍历。插入排序的基本操作是在一个有序表进行查找和插入。每一趟插入排序从后往前进行比较,便于数组中元素的向后移动。
空间复杂度:O(1)(当使用swap交换时,可实现原址)
时间复杂度:(n^2)/4
即O(n^2)
2.拓展
1)折半查找排...
分类:
编程语言 时间:
2015-03-16 16:29:20
阅读次数:
204
k-邻近算法概述k-邻近算法采用测量不同特征值之间的距离方法进行分类优点:精度高、对异常值不敏感、无数据输入假定缺点:计算复杂度高、空间复杂度高使用数据范围:数值型和标称型工作原理:存在一个样本数据集合(也称作训练样本集),并且样本集中每个数据都存在标签,即我们知道样本集中每一数据与所属的对应关系。...
分类:
编程语言 时间:
2015-03-16 16:11:37
阅读次数:
166
常用的排序算法的时间复杂度和空间复杂度
排序法
最差时间分析
平均时间复杂度
稳定度
空间复杂度
冒泡排序
O(n2)
O(n2)
稳定
O(1)
快速排序
O(n2)
O(n*log2n)
不稳定
O(log2n)~O(n)
选择排序
O(n2)
O(n2)
稳定
O(1)
二叉树排序
O(n...
分类:
编程语言 时间:
2015-03-16 01:04:52
阅读次数:
120
k-邻近算法概述k-邻近算法采用测量不同特征值之间的距离方法进行分类优点:精度高、对异常值不敏感、无数据输入假定缺点:计算复杂度高、空间复杂度高使用数据范围:数值型和标称型工作原理:存在一个样本数据集合(也称作训练样本集),并且样本集中每个数据都存在标签,即我们知道样本集中每一数据与所属的对应关系。...
分类:
编程语言 时间:
2015-03-12 23:50:07
阅读次数:
269
图的边的表示方法,有很多。像邻接矩阵、边集数组、邻接表等。其中,第三者的时空复杂度应该是最优的。但是实现却需要比较麻烦的链表,但是我们也可以用数组来模拟链表,使编程的复杂度进一步降低。 这种算法:遍历所有的边的时间复杂度是O(M),M表示边的总数,空间复杂度也是O(M)。在最坏情况下,查询i与j是....
分类:
编程语言 时间:
2015-03-08 20:02:58
阅读次数:
185
1 题目Implement pow(x,n).Hide TagsMathBinary Search2 思路一开始想的是使用二分递归调用。要考虑n为负数的情况。时间是O(log(n)),比调用pow(x,n-1)要快很多。后来看了别人的思路,有一种bit位操作的,空间复杂度O(1)的算法。3 代码 ....
分类:
其他好文 时间:
2015-03-08 10:25:40
阅读次数:
155
名称稳定性时间复杂度空间复杂度描述数据对象为链表平均最坏冒泡排序YO(n^2)O(1)无序区,有序区。 选择排序 O(n^2)O(1)有序区,无序区稳定性Y,其它同数组插入排序YO(n^2)O(1)有序区,无序区同数组堆排序 O(n log n)O(1)最大堆,有序区 归并排序YO(n log n)...
分类:
编程语言 时间:
2015-03-02 18:18:21
阅读次数:
134
http://blog.csdn.net/zolalad/article/details/11848739通常,对于一个给定的算法,我们要做 两项分析。第一是从数学上证明算法的正确性,这一步主要用到形式化证明的方法及相关推理模式,如循环不变式、数学归纳法等。而在证明算法是正确的基础上,第二部就是分析...
分类:
编程语言 时间:
2015-03-02 14:32:21
阅读次数:
148
Given a singly linked list where elements are sorted in ascending order, convert it to a height balanced BST.解法:自底向上 时间复杂度O(n), 空间复杂度O(logN) 1 clas...
分类:
其他好文 时间:
2015-02-26 19:58:04
阅读次数:
166