随机排序算法

1. 问题定义


           输入:S = { x1, x2, ... , xn};

           输出: 排序的S。



2. 随机算法


          基本思想:采用随机抽样的方法确定集合的划分点,然后把集合划分为两个子集合,分别递归地在每个子集合上使用随机排序算法。算法步骤如下:  

          1. 均匀等可能地在S中随机选取一个样本y;

          2. 比较S中的每个元素,把S划分成两个集合:S1 = {x| x∈S,xS2 = {x| x∈S,x>y};

          3. 递归地排序S1, S2;

          4. 顺序地输出排序的S1, y, S2.



3. 算法性能的分析


          定义随机变量Xij表示S中第i个元素与第j个元素比较的次数(取值1或者0),那么算法比较的总次数为sum(Xij),算法的平均复杂性为E(sum(Xij)),也可写为sum(E(Xij))。假设Pij表示Si和Sj在进行中进行比较的概率,则E|Xij| = 1 * Pij + 0 *(1 - Pij) = Pij。因此关键问题是分析如何求解Pij。

随机排序算法_第1张图片

随机排序算法_第2张图片


你可能感兴趣的:(数据结构及基本算法设计思想)