好像和冒泡有关, 面对这些乱七八糟的 数字字母公式, 请问我应该买什么书回来学习
1
fuermosi777 2017-07-29 01:27:46 +08:00
算法 4
|
2
lydasia 2017-07-29 01:34:04 +08:00 via iPhone
算法复杂度
|
3
weyou 2017-07-29 01:44:00 +08:00 via Android
买高中数学书就可以了
|
4
xupefei 2017-07-29 01:59:47 +08:00 1
指的是如果输入数据的量是 n,这个算法需要进行 n 平方次的运算。注意这里指的不是算法的运行时间。
这叫 Big O notation。 |
6
crab 2017-07-29 02:03:26 +08:00
|
7
MCVector 2017-07-29 04:14:29 +08:00 via Android
可以理解为计算时间是问题规模的函数。这个函数是个多项式,而且最高次幂是 2。
|
8
Andiry 2017-07-29 04:40:33 +08:00
用小学生的语言来讲:
排序一个十个数的数组,可能要做一百次运算; 排序一个一百个数的数组,可能要做一万次运算; 依此类推 |
9
starvedcat 2017-07-29 06:04:05 +08:00 1
不需要买书,上网看文章就行
搜索“时间复杂度” |
10
skadi 2017-07-29 08:58:26 +08:00
O 渐近时间复杂度.
就是说这个算法的时间复杂度是输入 N 的平方. po 大概需要一本算法导论进阶. |
11
zander 2017-07-29 09:11:27 +08:00 via Android
抽象概念,复杂度。
|
12
kindjeff 2017-07-29 10:21:31 +08:00
只上过小学太困难了吧,至少还得看初中和高中数学呀
|
13
ipwx 2017-07-29 10:27:06 +08:00
严格的大 O 定义要用极限语言,有微积分基础才行。
所以楼主别追求严格定义了,形象理解一下就行。就是这个算法消耗的时间和你的数据量成平方相关,系数不确定。但是常数系数一般在算法复杂度分析里面忽略。 复杂度分析理论的优势是,不需要跑一下程序,就可以估计算法之间的优劣。 |
14
lzjamao 2017-07-29 10:31:31 +08:00
x 与 y 的关系趋势。
|
15
lzjamao 2017-07-29 10:33:12 +08:00
@lzjamao
1.线性关系。如 x 增加 1,y 增加 1,y = x + 1。放大 2 倍,y 也放大 2 倍。y = x * 2 2.非线性关系。如 x 增加 1,x^2 + y ^ 2 = 1 ( x 的 2 的平方根),x 为正数或负数减时。y 都有两种结果 |
16
zyqf 2017-07-29 10:52:09 +08:00 via Android
通俗理解即:是衡量算法快慢的一个指标
所有算法都能得出这个时间复杂度,解决相同问题的不同算法的优劣,一般是根据时间复杂度衡量。 |
18
ic2y 2017-07-29 12:51:48 +08:00
买本《数据结构与算法》研究研究吧,先 不要买《算法导论》 《算法分析》 这种巨难的书
|
19
ovear 2017-07-29 12:58:39 +08:00
LS 说的好复杂。。
语句频度中,最高的数量级。。 语句频度:一条语句执行的次数 for(int i = 0; i<n; i++){ do(); //语句频度 n } for(int i = 0; i<n; i++){ sout("a");//语句频度 n for(int j = 0; j<n; j++){ do();//语句频度 n^2 } } 语句频度之和 n^2 + n 算法复杂度 O(n^2) |