题目:有1,2,3,..n 的无序整数数组,求排序算法。要求时间复杂度 O(n), 空间复杂度O(1)。 分析:对于一般数组的排序显然 O(n) 是无法完成的。 既然题目这样要求,肯定原先的数组有一定的规律,让人们去寻找一种机会。 例如:原始数组: a = [ 10, 6,9, 5,2, 8,4,7 ...
分类:
编程语言 时间:
2016-09-13 13:03:59
阅读次数:
183
一般地,当递归方程为T(n) = aT(n/c) + O(n), T(n)的解为: O(n) (a<c && c>1) O(nlog2n) (a=c && c>1) //以2为底 O(nlogca) (a>c && c>1) //n的(logca)次方,以c为底 To be continue... ...
分类:
其他好文 时间:
2016-09-12 06:10:05
阅读次数:
94
1.递归执行过程 (1) 例子:求N!。 这是一个简单的"累乘"问题,用递归算法也能解决。 n! = n * (n - 1)! n > 1 0! = 1, 1! = 1 n = 0,1 因此,递归算法如下: Java代码 以n=3为例,看运行过程如下: fact(3) fact(2) fact(1) ...
分类:
其他好文 时间:
2016-09-10 22:10:57
阅读次数:
162
#include<stdio.h>#include<stdlib.h>//线性表的动态分配链式存储结构#define LIST_INIT_SIZE 100//线性表存储空间的初始分配量#define LISTINCREMENT 10//线性表存储空间的分配增量//函数结果状态代码#define TR ...
分类:
编程语言 时间:
2016-09-05 19:03:23
阅读次数:
222
#include<stdio.h>#include<stdlib.h>//线性表的动态分配顺序存储结构#define LIST_INIT_SIZE 100//线性表存储空间的初始分配量#define LISTINCREMENT 10//线性表存储空间的分配增量//函数结果状态代码#define TR ...
分类:
编程语言 时间:
2016-09-04 12:51:49
阅读次数:
315
复杂度分析: :线性时间复杂度 ,其中,则称为“多项式时间复杂度算法” 多项式时间复杂度被视作一个具有特殊意义的复杂度级别:多项式的运行时间成本,在实际应用中一般被认为是可接受的 若问题存在一个复杂度在此范围以内的算法,则称该问题是可有效求解的或易解的 ... ...
分类:
其他好文 时间:
2016-08-13 01:15:01
阅读次数:
250
1、稳定性 ①冒泡排序 比较是两个相邻的元素比较,交换是两个相邻的元素交换。所以如果两个元素相等,就不用无聊地去交换吧,这样也能减少交换次数。所以冒泡排序是稳定的。 ②选择排序 选择排序是每次给第一个位置选第一小的,给第二个位置选第二小的,以此类推.....。所以说两个相等的元素可能因为选择第一个小 ...
分类:
编程语言 时间:
2016-07-11 12:09:47
阅读次数:
136
标题长坑,就拿最近有在用的来弄吧,先写个大概,以后逐渐完善。 对于以下代码,默认包含头文件: 1.冒泡排序(Bubble Sort) 先从课本上最常见的冒泡排序说起吧,C++代码如下(个人习惯介绍算法使用C++,比伪代码还通俗易懂.......) 在下文中,我会给出实验测试算法复杂度的方法,我们不急 ...
分类:
编程语言 时间:
2016-07-08 21:34:08
阅读次数:
232
&1 思想和时间复杂度 分治法思想(Divide and Conquer),这是算法导论里面讲的第一个算法思想,很经典也很实用。 时间复杂度分析,最好是O(n),最差是O(n2),平均性能是O(nlog(n))。 &2 算法 #1. 在待排数列中(n个数)选择一个基准数(理论上可以任意); #2. ...
分类:
编程语言 时间:
2016-07-07 09:46:38
阅读次数:
147
思想 例子 复杂度分析 思想 基本步骤 例子 思想 贪心算法VS动态规划 例子 ...
分类:
编程语言 时间:
2016-07-02 22:44:25
阅读次数:
238