寻找第f小数的证明
来源:互联网 发布:淘宝网假冒材质成分 编辑:程序博客网 时间:2024/06/05 02:53
在数列A[1...N] 中查找第f小的数
算法如下:
1任意选定一个数r(比如说A[f]),然后将A[m...n]分成两部分:
A[m],...A[k],A[k+1],...A[n]
并满足 A[m],...,A[k]<=r A[k+1],A[n]>=r
2如果 f属于[m,k],另n=k
3如果f属于[k+1,n],另m=k+1
4如果 m=n=k,终止
次算法将A[1,N]分成三部分
A[1,m-1]<=A[m,n]<=A[n+1,N]
步骤一:问题定义
*前条件:给定数列A[1...N],和1<=f<=N
*后条件:移动A使得A满足
对于任意p,q(1<=p<=f<=q<=N 可推出A[p]<=A[f]<=A[q]) (Found)
步骤二:寻找中间变量(不变量)
*定义中间变量m和n,满足A[m]是中间部分第一个元素,A[n]是中间部分最后一个元素
*不变量的目的:
m<=f且对于任意p,q(1<=p<m<=q<=N 可推出 A[p]<=A[q]) (m-inv)
f<=n 且对于任意p,q(1<=p<=n<q<=N 可推出 A[p]<=A[q]) (n-inv)
*决定m和n的初始值:
m=1,n=N
*检查初始值是否满足不变量
*定义递增情况:
while m<n do "减小中间部分“
*该循环能否完成目标任务:循环终止时:
m-inv且n-inv且(m<n不成立)
可推出 m==n==且对于任意p,q(1<=p<=f<=q<=N 可推出 A[p]<=A[f]<=A[q]) 结论成立
*得到程序结构:
0 0
- 寻找第f小数的证明
- 分治算法寻找第K小数
- 快排、寻找第k小数和前k小数
- WHU-Problem 1152 - Feli 的糖果 寻找第K小数(计数排序,与快速排序)
- f(A∩B) 向左 f(A) ∩ f(B) 的证明
- 欧拉公式V+F-E=2的证明
- 证明利用快慢指针寻找有环单链表中环的起点算法
- SCAU F 寻找SCAU
- LeetCode4. Median of Two Sorted Arrays(寻找第k小数:分治O(log(n+m)))
- 求n个数的第K小数
- F#入门-第一章 概述-第三节 F#的安装
- F#入门-第一章 概述-第五节 使用F#的编译器
- 寻找工作的的第一天
- CF 702F T-shirt 奇怪的平衡树维护+超强复杂度证明
- 寻找第i小的数
- 寻找第K大数的方法
- 寻找第K大的数
- 寻找最大的第K个数
- C语言实现万年历
- 母婴市场备受亲睐,电商运营需把握要点
- JAVA基础,IO流。(文件复制的实现)
- 东软实训(十三)
- 香港VPS CENTOS6.x操作系统WEB运行环境配置脚本
- 寻找第f小数的证明
- 实体店业绩惨淡 智能家居开网店低价揽客
- NWERC 2011 ABCDEH 题解
- 5-0. 求序列前N项和(15)
- js处理td值长度过长
- 正品名牌遭疯抢 都是半价惹的“祸”
- 如何在多线程中使用JNI?
- Spoj 9887 Binomial coefficients 构造
- hdu1180诡异的楼梯……bfs走迷宫……wa了16次,我太渣了