概率算法
抽奖概率-三种算法

抽奖概率-三种算法最近接触到⼀个抽奖需求,加上平时玩的暗⿊3很少掉暗⾦装备,就抽空学习下这类概率问题,暂时按⽹络称为掉宝类型概率。
例如游戏中打败⼀个boss,会掉落下⾯其中⼀个物品,⽽每个物品都有⼀定概率:1. 靴⼦ 20%2. 披风 25%3. 饰品 10%4. 双⼿剑 5%5. ⾦币袋 40%现在的问题就是如何根据概率掉落⼀个物品给玩家。
⼀. ⼀般:⽣成⼀个列表,分成⼏个区间,例如列表长度100,1-20是靴⼦的区间,21-45是披风的区间等,然后随机从100取出⼀个数,看落在哪个区间。
算法时间复杂度:预处理O(MN),随机数⽣成O(1),空间复杂度O(MN),其中N代表物品种类,M则由最低概率决定。
⼆、离散算法:也就是上⾯的改进,竟然1-20都是靴⼦,21-45都是披风,那抽象成⼩于等于20的是靴⼦,⼤于20且⼩于等于45是披风,就变成⼏个点[20,45,55,60,100],然后也是从1到99随机取⼀个数R,按顺序在这些点进⾏⽐较,知道找到第⼀个⽐R⼤的数的下标,⽐⼀般算法减少占⽤空间,还可以采⽤⼆分法找出R,这样,预处理O(N),随机数⽣成O(logN),空间复杂度O(N)。
请点击查看详细:三、Alias MethodAlias Method就不太好理解,实现很巧妙,推荐先看看这篇⽂章:⼤致意思:把N种可能性拼装成⼀个⽅形(整体),分成N列,每列⾼度为1且最多两种可能性,可能性抽象为某种颜⾊,即每列最多有两种颜⾊,且第n列中必有第n种可能性,这⾥将第n种可能性称为原⾊。
想象抛出⼀个硬币,会落在其中⼀列,并且是落在列上的⼀种颜⾊。
这样就得到两个数组:⼀个记录落在原⾊的概率是多少,记为Prob数组,另⼀个记录列上⾮原⾊的颜⾊名称,记为Alias数组,若该列只有原⾊则记为null。
之前的例⼦,为了便于演⽰换成分数1. 靴⼦ 20% -> 1/42. 披风 25% -> 1/53. 饰品 10% -> 1/104. 双⼿剑 5% -> 1/205. ⾦币袋 40% -> 2/5然后每个都乘以5(使每列⾼度为1),再拼凑成⽅形拼凑原则:每次都从⼤于等于1的⽅块分出⼀⼩块,与⼩于1的⽅块合成⾼度为1由上图⽅形可得到两个数组:Prob: [3/4, 1/4, 1/2, 1/4, 1]Alias: [4, 4, 0, 1, null] (记录⾮原⾊的下标)之后就根据Prob和Alias获取其中⼀个物品随机产⽣⼀列C,再随机产⽣⼀个数R,通过与Prob[C]⽐较,R较⼤则返回C,反之返回Alias[C]。
概率公式算法

概率公式算法
概率公式是用来计算概率的数学公式。
常用的概率公式有:
贝叶斯公式:P(A|B) = P(B|A) * P(A) / P(B)
高斯公式:P(x|u,s) = 1 / (sqrt(2 * pi) * s) * e^(-1/2 * ((x - u) / s)^2)
条件概率公式:P(A|B) = P(A,B) / P(B)
独立性公式:P(A,B) = P(A) * P(B)
这些公式可以用来计算不同情况下的概率,在机器学习、数据分析等领域有广泛应用。
除了上面提到的几个常用的概率公式,还有其他一些常用的概率公式,如:
概率密度函数(PDF):用来描述连续型随机变量的概率密度。
概率质量函数(PMF):用来描述离散型随机变量的概率密度。
狄利克雷公式:用来计算组合概率。
随机变量转移矩阵:用来描述随机变量之间的转移关系。
多项式公式:用来计算多项式的概率分布。
期望值公式:用来计算随机变量的期望值。
这些公式都有着独特的应用领域,在统计学、概率论、数学建模等领域有着重要的作用。
1到10牛牛各种概率计算

1到10牛牛各种概率计算1、52张牌,每人派5张牌。
5张牌中,其中3张加起来点数为10的倍数的,为牛,而另外2张加起来,取个位数为点数。
J、Q、K都当10点。
如K,3,7,6,8 就是K,3,7为牛,6,8为4点。
2、把纸牌按点数分为1,2,3,4,5,6,7,8,9,10,10种类型。
KQJ10为一种。
3、胜负方式,有点算点数,点数相同算最大的牌。
没点都牌大。
10点为牛牛。
分情况计算:1)五张都为10的情况:C5/16=0.0016806722689076;2)四张为10,一张为1~9的情况:C4/16*C1/36=0.0252100840336134;3)三张为10,二张为1~9的情况:C3/16*C2/36=0.135746606334842;4)二张为10,三张为1~9的情况:C2/16*C3/36=0.32967032967033;5)一张为10,四张为1~9的情况:C1/16*C4/36=0.3626373626373626;6)五张都为1~9的情况:C5/36=0.1450549450549451.分析:其中1),2),3)至少有3张为10,所以肯定有牛。
4)当中的三张和为10,20或者二张和为10。
5)当中四张1~9当中3张和为10,20或者2张和为10。
6)当中:三张加起来等于10或者20的情况。
和为10的有:118,127,136,145,226,235,334 ,442。
和为20的有:992,983,974,965,884,875,776,668。
将这16种情况按是否有重号重新分类:118,226,334,442,992,884,776,668 重号的有8种。
每种个有24种情况1;127,136,145,235,983,974,965,875不重号的有8种。
每种个有64种情况2;19,28,37,46,55 2个和为10。
情况3。
4)三张为1~9, 3张中选2张和为10,或者3张和为10,20,情况1,2的共有(24+64)*8*(16*15/2)=84480种。
计算机算法设计与分析-概率算法

当n足够大时,统计出m的值, 就可以近似地求出I的值。
2023/10/8
计算机算法设计与分析
7
计算连续函数的算法
double Darts (int n) { double x, y; int k = 0; for (int i=1; i<=n; i++) { x=Random(); /*随机产生一个(0,1)区间的数*/ y=Random(); if (y<=f(x)) k++; } return k/double(n); }
2023/10/8
计算机算法设计与分析
8
随机抽样
在n个元素的集合中随机抽取m(0<m≤n) 个无重复的元素。为简单起见,假定所 有元素的值都位于1至n之间9
随机抽样
我们采用下面的方法进行选择:
1、首先将n个元素都标记为“未选择”; 2、重复下列步骤直到抽取了m个不同的 元素
2023/10/8
计算机算法设计与分析
2
随机数的产生
在概率算法中随机数的产生是个非常重 要的部分,但在计算机上无法产生真正 的随机数。
任何一种随机数的产生都和给定的初始 条件有关,当初始条件相同时,会给出 同样的随机数序列。还有,该随机数序 列存在周期,即经过一个周期后,序列 会重复出现。称为伪随机数。
//找到一个比基准大的元素放到空当,空当重新回到[low]处
}
r[low]=temp;
return low; //返回基准的位置
}
2023/10/8
计算机算法设计与分析
17
随机选择算法复杂度
这个算法的主要时间消耗在划分上,对 一个长度为n的序列进行划分,所用时间 为O(n),故递归式为: T(n)=T(n/2)+O(n)
九年级概率算法知识点归纳总结

九年级概率算法知识点归纳总结概率算法是概率论与数学算法结合的一门学科,主要研究与应用概率相关的数学方法与计算机算法。
它在现代科学与工程中具有广泛的应用,包括人工智能、数据挖掘、生物信息学等领域。
在初中九年级的数学学习中,概率算法也是一个重要的知识点。
本文将对九年级概率算法的相关知识进行归纳总结,以帮助同学们更好地理解与掌握。
一、概率的基本概念与性质1.样本空间与事件:样本空间是指一个随机试验所有可能结果的集合,事件是样本空间的子集。
概率的计算是建立在样本空间与事件的基础上的。
2.概率的基本性质:概率介于0与1之间,对于必然事件,概率为1;对于不可能事件,概率为0。
3.等可能原则:在一些随机试验中,如果每一个结果发生的概率相等,那么事件A发生的概率可用A中的有利结果数除以样本空间中所有可能结果的数目来计算。
二、概率的运算规则1.加法规则:对于两个互不相容事件A和B,即事件A和B不可能同时发生,其和事件发生的概率等于事件A和事件B分别发生的概率之和。
2.减法规则:对于事件A和事件B,其差事件A-B的概率等于事件A发生的概率减去事件A和事件B同时发生的概率。
3.乘法规则:对于两个独立事件A和B,即事件A的发生不影响事件B的发生,其交事件发生的概率等于事件A发生的概率乘以事件B在事件A发生的条件下发生的概率。
4.全概率公式:对于一组互不相容的事件A1, A2, ..., An,它们构成了样本空间的划分,即它们的和事件为样本空间,那么对于任一事件B,其概率可以由每个事件和事件B的交集的概率之和来计算。
三、条件概率与贝叶斯定理1.条件概率:在事件A发生的条件下事件B发生的概率记作P(B|A),表示已知事件A发生,在A的前提下事件B发生的可能性大小。
2.乘法定理:根据条件概率的定义,可以得到P(A∩B) = P(B|A) *P(A),其中P(A∩B)表示事件A和事件B同时发生的概率。
3.贝叶斯定理:根据乘法定理,可以得到贝叶斯定理的表达式,它表达了在已知事件A发生的条件下,事件B发生的概率与在已知事件B发生的条件下,事件A发生的概率之间的关系。
概率算法

1、概率算法:允许算法在执行的过程中随机的选择下一个计算步骤。
2、在多数情况下,当算法在执行过程中面临一个选择是:随机性选择常比最优选择省时,因此概率算法可在很大程度上降低算法复杂性。
3、概率算法的一个基本特征是对所求解问题的同一实例用同一概率算法求解两次可能得到完全不同的效果(所需时间或计算结果)。
4、概率算法包括:▪数值概率算法:求解数值问题的近似解,精度随计算时间增加而不断提高▪舍伍德算法:消除算法最坏情形行为与特定势力之间的关联性,并不提高平均性能,也不是刻意避免算法的最坏情况行为▪拉斯维加斯算法:求解问题的正确解,但可能找不到解▪蒙特卡罗算法:求解问题的准确解,但这个解未必正确,且一般情况下无法有效判定正确性5、随机数:随机数在概率算法设计中扮演着十分重要的角色。
在现实计算机上无法产生真正的随机数,因此在概率算法中使用的随机数都是一定程度上随机的,即伪随机数。
6、线性同余法是产生伪随机数的最常用的方法。
7、数值概率算法:通常用于数值问题的求解中,求解数值问题的近似解,精度随计算时间增加而不断提高例如:设有一半径为r的圆及其外切四边形。
向该正方形随机地投掷n个点。
设落入圆内的点数为k。
由于所投入的点在正方形上均匀分布,因而所投入的点落入圆内的概率为224rr∏。
所以当n足够大,4kn∏=程序一:double Darts(int n){ // 用随机投点法计算π值static RandomNumber dart; int k=0;for (int i=1;i <=n;i++) {double x=dart.fRandom(); double y=dart.fRandom(); if ((x*x+y*y)<=1) k++;}return 4*k/double(n);}计算定积分,同样的道理可以阐述到10()I f x dx=⎰表示曲线以下面积,那么落入曲线下面积的概率为()11000{()}()f xrP y f x dydx f x dx≤==⎰⎰⎰,即可知I mn≈8、舍伍德算法:设A 是一个确定性算法,当它的输入实例为x 时所需的计算时间记为tA(x)。
先验概率预测算法

先验概率预测算法标题:先验概率预测算法:理论与应用引言概述:先验概率预测算法是一种基于统计学原理的预测方法,通过利用已知的先验概率信息,结合观测数据,对未来事件的发生概率进行预测。
本文将从理论与应用两个方面,详细阐述先验概率预测算法的原理、优势以及在实际应用中的具体应用场景。
正文内容:1. 先验概率预测算法的原理1.1 概率论基础- 介绍概率论的基本概念,如样本空间、事件、概率等。
- 解释条件概率和贝叶斯定理的概念与作用。
1.2 先验概率- 解释先验概率的含义和计算方法。
- 引用实际案例,说明先验概率在预测中的作用。
2. 先验概率预测算法的优势2.1 基于统计学原理- 说明先验概率预测算法是基于统计学原理的有效方法。
- 指出其相对于其他预测方法的优势,如适用性广、可解释性强等。
2.2 考虑先验信息- 强调先验概率预测算法能够充分利用已知的先验信息,提高预测准确性。
- 举例说明先验信息对预测结果的影响。
3. 先验概率预测算法的应用场景3.1 金融市场预测- 分析先验概率预测算法在股市、外汇市场等金融领域的应用。
- 引用相关研究成果,验证先验概率预测算法在金融市场中的有效性。
3.2 自然灾害预测- 探讨先验概率预测算法在地震、洪水等自然灾害预测中的应用。
- 讨论该算法对减轻灾害影响的潜在作用。
3.3 产品销量预测- 说明先验概率预测算法在销售预测中的应用价值。
- 提供实际案例,展示该算法在产品销量预测中的准确性和实用性。
总结:通过对先验概率预测算法的原理、优势和应用场景的详细阐述,我们可以得出以下结论:- 先验概率预测算法是一种基于统计学原理的有效预测方法,能够充分利用先验信息提高预测准确性。
- 该算法在金融市场、自然灾害预测和产品销量预测等领域具有广泛的应用价值。
- 进一步研究和应用先验概率预测算法,有助于提升预测准确性,减少不确定性,为决策者提供更可靠的预测结果。
总之,先验概率预测算法在理论和实际应用中都具有重要意义,其能够为我们提供准确的预测结果,帮助我们做出更明智的决策。
概率的三种计算方法

通过直观和经验就能知道概率的几个基本命题,也可以说是公理,苏联的数学家柯尔莫哥洛夫总结了3条概率公理。
1. 事件发生的概率不小于02. 集合中的事件必有一件发生,则发生的概率之和等于13. 集合中事件互相不容,没有交集,则发生至少一个的概率等于每个事件概率之和。
概率计算方法一:频次算法即分别考虑每种事件发生的频次,单个事件频次除总频次,即是概率值,或者单个事件频次除以其他事件频次,然后再转化为概率值。
例如:邮件箱中收到大量邮件,有诈骗邮件,有正常邮件。
根据统计,诈骗邮件中出现文字:“中奖”占30%,出现“www.”占40%;正常邮件出现“中奖”占1%,出现“www.”占2%。
数据统计显示邮箱中诈骗邮件占比为20%,随机抽取一封邮件发现含有“中奖”和“www.”,这封邮件是诈骗邮件的概率是多少。
想直接列出概率算式有点难度,通过频次计算就比较简单。
这封邮件要么是诈骗邮件,要么是正常邮件。
先考虑含有“中奖”和“www.”的正常邮件有多少:(1-20%) x 1% x 2% = 160 %%%再考虑含有“中奖”和“www.”的诈骗邮件有多少20% x 30% x 40% = 240%%%两者比值160 :240 = 2:3因为这封邮件不是正常邮件就是诈骗邮件,两者的概率之和是1,所以诈骗邮件的概率就是:3 :(2+3)= 60%。
从这个例子中可以看出,用频次计算概率,就是分别考虑所有情况发生的频次,然后算出比值,然后再看总概率等于多少,若是互斥事件,总概率就是1,所以频次比就可以转化为概率值。
这样用分别考虑各自的频次的方法就能降低思考难度。
再举个取球的例子,两个盒子,甲盒子装有70个白球30个红球,乙盒子装有20个白球80个红球。
随意拿出一个盒子,取出一个球看颜色,再放回,连续取20次,发现10个白球10个红球。
问拿出的盒子是甲的概率多少。
用频次算法极为简单,分别算频次。
甲盒子中拿出10个白球和10个红球的频次是0.7^10 x 0.3^10 乙盒子同样算法0.2^10 x 0.8^10频次之比就是概率之比,因为是概率之和等于1,就很容易把频次比转化为概率。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Page 26
概率算法
2020/7/5
3.1 八皇后问题
八皇后问题是在8×8的棋盘上摆放八个皇后, 使其不能互相攻击,即任意两个皇后都不能处于同 一行、同一列或同一斜线上。
对于八皇后问题的任何一个解而言,每一个皇 后在棋盘上的位置无任何规律,不具有系统性,而 更像是随机放置的。由此想到拉斯维加斯型概率算 法:在棋盘上相继的各行中随机地放置皇后,并使 新放置的皇后与已放置的皇后互不攻击,直至八个 皇后均已相容地放置好,或下一个皇后没有可放置 的位置。
(4)概率算法在不同的运行中,对于相同的输入实 例可以有不同的结果,因此,对于相同的输入实例, 概率算法的执行时间可能不同。
Page 6
概率算法
2020/7/5
概率算法的时间性能
对于确定性算法,通常分析在平均情况下以 及最坏情况下的时间复杂性。
对于概率算法,通常分析在平均情况下以及 最坏情况下的期望时间复杂性,即由概率算法反 复运行同一输入实例所得的平均运行时间。
Page 24
概率算法
2020/7/5
拉斯维加斯型概率算法的一般形式
void Obstinate(input x, solution y) {
success=false; while (!success) success=LV(x, y); }
Page 25
概率算法
2020/7/5
设p(x)是对输入实例x调用拉斯维加斯型概率
Page 15
概率算法
2020/7/5
初始键值序列 6 13 19 23 31 35 58 一次划分结果 6[13 19 23 31 35 58]
(a) 以最小值6为轴值,划分不均衡
初始键值序列 6 13 19 23 31 35 58 随机选择一个 23 13 19 6 31 35 58 记录与6交换 一次划分结果 [6 13 19]23[31 35 28]
概率算法
2020/7/5
例如,判断表达式f(x1, x2, …, xn)是否恒等于0。
概率算法首先生成一个随机n元向量(r1, r2, …, rn), 并计算f(r1, r2, …, rn)的值,如果f(r1, r2, …, rn)≠0, 则f(x1, x2, …, xn)≠0;如果f(r1, r2, …, rn)=0,则或者 f(x1, x2, …, xn)恒等于0,或者是(r1, r2, …, rn)比较特 殊,如果这样重复几次,继续得到f(r1, r2, …, rn)=0 的结果,那么就可以得出f(x1, x2, …, xn)恒等于0的结 论,并且测试的随机向量越多,这个结果出错的可
概率算法
2020/7/5
考虑快速排序中的划分过程,选定一个轴值将序
列ri~rj进行划分,使得比轴值小的元素都位于轴值
的左侧,比轴值大的元素都位于轴值的右侧,假定轴
值的最终位置是s,则: (1)若k=s,则rs就是第k小元素; (2)若k<s,则第k小元素一定在序列ri~rs-1中; (3)若k>s,则第k小元素一定在序列rs+1~rj中;
因此,可以采用舍伍德型概率算法来消除算法 的时间复杂性与输入实例间的这种联系。
Page 11
概率算法
2020/7/5
如果一个确定性算法无法直接改造成舍伍德型概率算 法,可借助于随机预处理技术,即不改变原有的确定性算 法,仅对其输入实例随机排列(称为洗牌)。假设输入实 例为整型,下面的随机洗牌算法可在线性时间实现对输入 实例的随机排列。
Page 18
概率算法
2020/7/5
2.2 选择问题
设无序序列T=(r1, r2, …, rn),T的第k(1≤k≤n) 小元素定义为T按升序排列后在第k个位置上的元素。 给定一个序列T和一个整数k,寻找T的第k小元素的 问题称为选择问题。特别地,将寻找第n/2小元素的 问题称为中值问题。
Page 19
{
if (high-low<=k) return r[high]; //数组长度小于k
else {
Байду номын сангаас
i=Random(low, high); //在区间[low, high]中随机选取一个元素
r[low]←→r[i];
//交换元素
s=Partition(r, low, high); //进行一次划分,得到轴值的位置s
(b) 随机选择轴值,划分均衡 图1 一次划分引入随机选择的示例
Page 16
概率算法
2020/7/5
算法3——随机快速排序
void QuickSort (int r[ ], int low, int high) {
if (low<high) { i=Random(low, high); r[low]←→r[i]; k=Partition(r, low, high); QuickSort(r, low, k-1); QuickSort(r, k+1, high);
算法1——随机数发生器
int Random(int a, int b) { return rand( )%(b-a)+a; //rand( )产生[a, b)之间的随机整数 }
Page 9
概率算法
2020/7/5
2 舍伍德(Sherwood)型概率算法
2.1 快速排序 2.2 选择问题
Page 10
算法2——随机洗牌
void RandomShuffle(int n, int r[ ]) {
for (i=0; i<n; i++) {
j=Random(0, n-i-1); r[i]←→r[j]; //交换r[i]和r[j] } }
Page 12
概率算法
2020/7/5
舍伍德型概率算法总能求得问题的一个解,并且所求得 的解总是正确的。但与其相对应的确定性算法相比,舍伍德 型概率算法的平均时间复杂性没有改进。换言之,舍伍德型 概率算法不是避免算法的最坏情况行为,而是设法消除了算 法的不同输入实例对算法时间性能的影响,对所有输入实例 而言,舍伍德型概率算法的运行时间相对比较均匀,其时间 复杂性与原有的确定性算法在平均情况下的时间复杂性相当。
Page 13
概率算法
2020/7/5
2.1 快速排序
快速排序算法的关键在于一次划分中选择合适 的轴值作为划分的基准,如果轴值是序列中最小 (或最大)记录,则一次划分后,由轴值分割得到 的两个子序列不均衡,使得快速排序的时间性能降 低。
Page 14
概率算法
2020/7/5
2.1 快速排序
舍伍德型概率算法在一次划分之前,根据随机 数在待划分序列中随机确定一个记录作为轴值,并 把它与第一个记录交换,则一次划分后得到期望均 衡的两个子序列,从而使算法的行为不受待排序序 列的不同输入实例的影响,使快速排序在最坏情况 下的时间性能趋近于平均情况的时间性能。
} }
Page 17
概率算法
2020/7/5
一次划分算法Partition与经典算法相同。在最 坏情况下的时间复杂性仍是O(n2),这是由于最坏情 况下,随机数发生器在第i次随机产生的轴值记录恰 好都是序列中第i小(或第i大)记录。但是,作为 随机数发生器,这种情况的出现概率是微乎其微的。 事实上,输入记录的任何排列,都不可能出现使算 法行为处于最坏的情况。因此,该算法的期望时间 复杂性是O(nlog2n)。
能性就越小。
Page 5
概率算法
2020/7/5
一般情况下,概率算法具有以下基本特征:
(1)概率算法的输入包括两部分,一部分是原问题 的输入,另一部分是一个供算法进行随机选择的随机 数序列;
(2)概率算法在运行过程中,包括一处或若干处随 机选择,根据随机值来决定算法的运行;
(3)概率算法的结果不能保证一定是正确的,但可 以限定其出错概率;
n 1,2, (式1)
其中,b≥0,c≥0,m>0,d≤m。d称为随机数发生器的
随机种子(Random Seed),当b、c和m的值确定后,
给定一个随机种子,由式1产生的随机数序列也就确定了。
Page 8
概率算法
2020/7/5
计算机语言提供的随机数发生器,一般会需要一个随机 种子,这个随机种子可以是系统当前的日期或时间。下面给 出利用C++语言中的随机函数rand产生的分布在任意区间[a, b)上的随机数算法。
概率算法
2020/7/5
1.1 概率算法的设计思想
概率算法把“对于所有合理的输入都必须给出 正确的输出”这一求解问题的条件放宽,把随机性 的选择注入到算法中,在算法执行某些步骤时,可 以随机地选择下一步该如何进行,同时允许结果以 较小的概率出现错误,并以此为代价,获得算法运 行时间的大幅度减少。
Page 4
算法获得问题的一个解的概率,则一个正确的拉斯 维加斯型概率算法应该对于所有的输入实例x均有 p(x)>0。在更强的意义下,要求存在一个正的常数 δ,使得对于所有的输入实例x均有p(x)>δ。由于 p(x)>δ,所以,只要有足够的时间,对任何输入实 例x,拉斯维加斯型概率算法总能找到问题的一个
解。换言之,拉斯维加斯型概率算法找到正确解的 概率随着计算时间的增加而提高。
概率算法
2020/7/5
舍伍德型概率算法在一次划分之前,根据随机数在待划 分序列中随机确定一个记录作为轴值,并把它与第一个记录 交换,则一次划分后得到期望均衡的两个子序列,使得选择 问题在最坏情况下的时间性能趋近于平均情况的时间性能。
算法4——选择问题
int Select(int r[ ], int low, int high, int k)
Page 23
概率算法
2020/7/5