一些常用的数学知识与算法

 

# 中位数Median与平均数的性质:

1, 对于数字A[], 给一个值 T,求 Σ |A[i] - T|,当T = Median时,结果最小。

数组中所有数和Median的差的绝对值之和最小。

应用 TopCoder SRM 645DIV2-500

2, 平均数AVG的性质:

数组中所有数和AVG的差的平方和最小。

 

# gcd(greatest common divisor) 和 lcm(lowest common multiply)满足结合率

求一堆数的gcd或者 lcm,只要先求出前两个,然后挨个求当前结果和下一个数的gcd(lcm) 即可

 

# 求N以内的所有质数,或者求所有从小到大的质数中第K个质数

1, 求N以内的所有质数

Sieve of Eratosthenes 

2, 求第K个质数

估计N内所有的质数的个数的算法是N/ln(N),这是个N > 2 后就开始单调递增的函数。因此可以用二分法估算出N的大小,再利用上面的方法求出N 内第K个质数。

参考:http://program-think.blogspot.com/2011/12/prime-algorithm-1.html#head-4

 

# 数组的suffle方法,保证每种permutation出现的概率相等

Fisher–Yates_shuffle

 

# 格雷码 Gray code

从0开始数,第n个Gray code 为 (n>>1)^n

 

# AC自动机算法 Aho-Corasick automation

多模匹配算法之一。常见的例子就是给出n个单词,再给出一段包含m个字符的文章,让你找出有多少个单词在文章里出现过。

http://www.cppblog.com/mythit/archive/2009/04/21/80633.html

 

# 后缀树

http://taop.marchtea.com/08.06.html

### 后缀数组,suffix tree 的O(n)版本

http://dongxicheng.org/structure/suffix-array/

### 类似的还有 Ukkonen 的后缀树

http://www.oschina.net/translate/ukkonens-suffix-tree-algorithm-in-plain-english

 

# Treaps,一个比较容易实现的balanced tree

https://pavpanchekha.com/blog/treap.html

http://dongxicheng.org/structure/treap/

http://www.cnblogs.com/huangxincheng/archive/2012/07/30/2614484.html

 

# skip list

你可能感兴趣的:(算法)