随机排序算法

1. 问题定义


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

           输出: 排序的S。



2. 随机算法


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

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

          2. 比较S中的每个元素,把S划分成两个集合:S1 = {x| x∈S,x<y}, S2 = {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。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值