你们发现所有算法都具有惊人的(艰难的,奇怪的)复杂性分析 - 得出的O符号和分析方式的独特性?
答案 0 :(得分:15)
我有(很)一些例子:
答案 1 :(得分:2)
答案 2 :(得分:2)
这个有点简单,但梳子排序让我大吃一惊。
http://en.wikipedia.org/wiki/Comb_sort
这是一个如此简单的算法,它大部分读起来都像一个过于复杂的冒泡排序,但它是O(n * Log [n])。我发现这有点令人印象深刻。
快速傅里叶变换的过多算法也令人印象深刻,证明它们有效性的数学是有趣的,尝试自己证明一些很有趣。
http://en.wikipedia.org/wiki/Fast_Fourier_transform
我可以相当容易地理解素数基数,多个素数基数和混合基数算法,但是对于大小为素数的集合而言,它非常酷。
答案 3 :(得分:2)
2D有序搜索分析非常有趣。你有一个二维数字数组NxN,其中每一行都是从左到右排序的,每一列都是从上到下排序的。任务是在数组中查找特定数字。
递归算法:选中中间的元素,与目标数比较,丢弃四分之一的数组(取决于比较的结果),递归地应用于Stillig 3季度是非常有趣的分析。 / p>
答案 4 :(得分:1)
非确定性多项式复杂性得到了我的投票,尤其是(可以认为不太可能)可能与多项式相同的可能性。同样,任何理论上都可以从量子计算中受益的东西(N.B.这个集合绝不是所有算法)。
另一个得到我投票的将是对任意精度数字的常见数学运算 - 这是你必须考虑的事情,比如乘以大数字比乘以小数字更贵。在Knuth中有很多这方面的分析(对任何人来说都不应该是新闻)。 Karatsuba的方法非常简洁:将两个因子分成两半(A1; A2)(B1; B2)并分别乘以A1 B1,A1 B2,A2 B1,A2 B2,然后合并结果。如果需要递归...
答案 5 :(得分:0)
Shell排序。有大量的变种有不同的增量,除了制作complexity analysis simpler之外,其中大部分没有任何好处。