Ω
(big-omega)
4.非渐近紧确上界:o(小-oh)
5.非渐近紧确下界:ω(小-omega)
6.渐近记号Θ、Ο、o、Ω、ω关系
7.参考资料
1.渐近紧确界记号: Θ(big-theta)
假设算法A的运行时间表达式
6.渐近记号Θ、Ο、o、Ω、ω关系
记号
|
含义
|
通俗理解
|
(1)Θ(西塔)
|
紧确界。
|
相当于"="
|
(2)O (大欧)
|
上界。
|
相当于"<="
|
(3)o(小欧)
|
非紧的上界。
|
相当于"<"
|
(4)Ω(大欧米伽)
|
下界。
|
相当于">="
|
(5)ω(小欧米伽)
|
非紧的下界。
|
相当于">"
|
7.参考资料
1.算法导论 殷建平 译 机械工业出版社
2.算法设计与分析 屈婉玲 著
3.算法设计与分析 王秋芬 吕聪颖著
算法设计与分析这门课学了很久了,竟然对Θ、O、o、Ω、ωΘ、Ο、o、Ω、ω还没有一个清晰的认识,是总结一下的时候了。下面正式开始:目录:1.渐进精确界记号:ΘΘ(big-theta)2.渐进上界记号 :OO(big-oh)3.渐进下界记号 :ΩΩ(big-omege)4.非渐进紧确上界:o(小-oh)5.非渐进紧确下界:ω(小-omege)6.渐进记号Θ、Ο、o、Ω、ω关系7.参考资料
各种排序
算法
如下:
冒泡排序(有时也称为沉没排序)是一种简单的排序
算法
,它反复遍历要排序的列表,比较每对相邻项,并以错误的顺序交换它们。 重复遍历该列表,直到不需要交换为止,这表明该列表已排序。 该
算法
是一种比较排序,以较小或较大的元素“冒泡”到列表顶部的方式命名。 尽管该
算法
很简单,但是对于大多数问题而言,它还是太慢且不切实际,即使与插入排序相比也是如此。 如果输入按大部分排序的顺序排列,并且某些乱序元素几乎在适当的位置,则冒泡排序可能是实用的。
时间
复杂度
分析
:
最糟糕的情况
最好的情况
O(n 2 )
Θ(n 2 )
选择排序是一种排序
算法
,特别是就地比较排序。 它具有O(n2)时间复
渐近
记号
(Asymptotic Notations)
1. 定义
渐近
记号
是用来描述
算法
渐近
运行时间的
记号
,是根据定义域为自然数集N={0, 1, 2, ……}的函数来定义的。我们通常使用
渐近
记号
来描述
算法
的运算时间。接下来,会介绍一些基本的
渐近
记号
。
2. O
记号
(big-Oh)
2.1 定义
f(n) = O(g(n))——There exists constant c > 0 and n0 such that f(n) < c * g(n) for n >= n0.
存在正常数
允许用户设置别名
Aliaser是一个简单的chrome扩展程序,允许用户为较长的单词或短语创建快捷方式。
它适用于那些发现自己一遍又一遍地将相同信息输入到Web表单中的人,或者适合那些想要一种简单的方法在文本中添加不常见字符(例如Ω或Θ)的人。
Aliaser非常轻巧,易于使用。
您可以查看github页面以获取更多说明:https://github.com/dwoznicki/aliaser Aliaser可以处理网络上的大多数输入和文本区域。
您的别名存储在本地chrome存储中。
要运行
算法
,请将测试数据移动到
算法
的相应文件夹中。 执行后结果将位于并行级别。
时间
复杂度
双调排序:最坏情况 O(nlog 2 (n) 2 ),平均情况 Θ(nlog 2 (n) 2 ),最好情况 Ω(nlog 2 (n) 2 )
桶排序:最坏情况 O(n 2 ),平均情况 Θ(n+k),最好情况 Ω(n+k)
合并排序:最坏情况 O(nlog 2 n),平均情况 Θ(nlog 2 n),最好情况 Ω(nlog 2 n)
快速排序:最坏情况 O(n 2 ),平均情况 Θ(nlog 2 n),最好情况 Ω(nlog 2 n)
基数排序:最坏情况 O(d(n+k)),平均情况 Θ(d(n+k)),最好情况 Ω(d(n+k))
等级排序:最坏情况 O(n 2 ),平均情况 Θ(n 2 ),最好情况 Ω(n 2 )
1.渐进紧确界
Θ
记号
定义:
对一个给定的函数g(n),用Θ(g(n))来表示以下函数的集合:Θ(g(n))={T(n):存在c1,c2,n0>0,使得对所有n ≥ n0,有0≤ c1g(n) ≤T(n) ≤ c2g(n) }
2.渐进上界
O
记号
定义:
对一个给定的函数g(n),用Θ(g(n))来表示以下函数的集合:
Θ(g(n))={T(n):存在c,n0>0,使得对所有n ≥ n0,有0≤ T(n) ≤ cg(n) }
3.渐进下界
Ω
记号
定义:
对一个给定的函数g(n),用Θ
数学定义:设 f(n) 和 g(n) 是定义域为自然数集合的函数。如果n→∞ 时,lim f(n) / g(n)
存在,并且等于某个常数c ( c >0 ), 那么 f(n) =
θ
(g(n))。
通俗理解为 f(n) 和 g(n) 和 g(n) 同阶,
θ
用来表示
算法
的精确阶。
如 5n +100 =
θ
(n)
二,
渐近
上界 O
数学定义: 设 f(n) 和 g...
1.
算法
设计与
分析
概述 在总结递归
算法
的时间
复杂度
分析
之前,应该明确几组概念。
算法
仅仅是求解问题的解决方案,这个解决方案本身并不是问题的答案,而是能获得答案的指令序列。只有通过执行
算法
才可以获得求解问题的答案。
从
算法
是否递归调用的角度看,
算法
可以分为非递归
算法
和递归
算法
。
非递归
算法
时间
复杂度
分析
较为简单,通常是计算
算法
中基本语句执行次数,一般都是一个关于问题规模n的表达式,
渐近
复杂度
(big-Θ)是一种用于描述
算法
运行时间或空间
复杂度
的
记号
。它表示
算法
在最坏情况下的上界和下界,即它给出了
算法
的上限和下限。
假设有一个函数 f(n),其中 n 是输入大小。如果存在两个正常数 c1 和 c2,以及一个正整数 n0,使得对于大于等于 n0 的所有 n,都有 c1*g(n) ≤ f(n) ≤ c2*g(n),其中 g(n) 是另一个函数。那么我们可以说 f(n) 的
渐近
复杂度
为 Θ(g(n))。
简而言之,
渐近
复杂度
描述了
算法
的运行时间或空间需求与输入大小的关系。
渐近
复杂度
大致分为三种情况:最好情况、平均情况和最坏情况。最好情况表示在最理想的输入情况下
算法
的运行时间;平均情况表示在平均输入情况下
算法
的运行时间;最坏情况表示在最糟糕的输入情况下
算法
的运行时间。
常见的
渐近
复杂度
包括:
- 常数
复杂度
(O(1)):
算法
的运行时间不随输入大小而变化。
- 线性
复杂度
(O(n)):
算法
的运行时间与输入大小成线性关系。
- 对数
复杂度
(O(log n)):
算法
的运行时间与输入大小的对数关系。
- 线性对数
复杂度
(O(n log n)):
算法
的运行时间与输入大小的对数关系乘以线性因子。
- 平方
复杂度
(O(n^2)):
算法
的运行时间与输入大小的平方成正比。
- 指数
复杂度
(O(2^n)):
算法
的运行时间与输入大小的指数关系。
渐近
复杂度
分析
可以帮助我们评估
算法
的效率和可行性,并选择适合问题规模的
算法
。