随机算法
介绍两种将输入随机化的方法:
随机排列数组
- 设 A [ 1... n ] A[1...n] A[1...n]为原始输入。
- 生成一个新数组 P [ 1... n ] P[1...n] P[1...n],其中 P i = r a n d o m ( 1 , n 3 ) 。 P_i=random(1,n^3)。 Pi=random(1,n3)。
- 以 P P P为基准对 A A A进行排序。
原址排列数组
f o r i = 1 t o n s w a p A i w i t h A r a n d o m ( i , n ) for~i=1~to~n\\ swap~A_i ~with ~A_{random(i,n)} for i=1 to nswap Ai with Arandom(i,n)