第K(大)小数
来源:互联网 发布:美工设计公司 编辑:程序博客网 时间:2024/05/17 02:04
测试: acdreamoj 瑶瑶的第K大
分治策略, 不断的把序列【L, R】分为【】 <= mid , 【】>=mid , O(n) 。
int x[5000008] ;void kthmin(int L , int R , int k){ int i = L , j = R , mid = x[(L+R)>>1] ; do{ while(x[i] < mid) i++ ; while(x[j] > mid) j-- ; if(i <= j){ swap(x[i] , x[j]) ; i++ , j-- ; } }while(i <= j) ; if(L <= j && k <= j-L+1) kthmin(L , j , k) ; if(i <= R && k >= i-L+1) kthmin(i , R , k-(i-L)) ;}int getint(){ int t = 0 ; char c = getchar() ; while(c < '0' || c > '9') c = getchar() ; while('0' <= c && c <= '9'){ t = t*10 + c - '0' ; c = getchar() ; } return t ;}int main(){ int n , k ; while(scanf("%d%d" , &n , &k) != EOF){ for(int i = 1 ; i <= n ; i++) x[i] = getint() ; kthmin(1 , n , n-k+1) ; printf("%d\n" , x[n-k+1]) ; } return 0;}
第k小 kthmin(1, n , k) ;
第k大 kthmin(1,n, n-k+1)
0 0
- 第K(大)小数
- 第K小数(二分)
- 第K小数(二分)
- 第k小数(快排)
- 第k小数
- 第K小数
- 第k小数
- 第k小数
- whuoj1574 第K小数
- 第k小数
- 第K小数
- 第K小数
- 第K小数
- 多数组第K小数
- 线段树--第k小数
- NKOI 1922 第K小数
- 【poj3065改编】第K小数
- 九度OJ 1174 查找第K小数 (STL)
- Java程序员必去的网站(转)
- redis学习(一)Redis应用场景
- CABasicAnimation用法
- spring 与 事物管理
- vsftpd自启动(开机启动)
- 第K(大)小数
- IMarkerSymbol,ILineSymbol,IFillSymbol,ISimpleMarkerSymbol接口
- 机房收费系统——项目需求说明书
- 使用SharePoint创建并自定义网站页面
- NYOJ-283 对称排序
- Java学习总结7——异常处理机制1
- CABasicAnimation学习Demo 包括了一些常用的动画效果
- 一次遍历网页抓取数据经历
- 算法学习资料