查找第 k 大的元素
来源:互联网 发布:monaco 字体 windows 编辑:程序博客网 时间:2024/05/21 19:44
1.原理:
运用快速排序的方法,把数组s[i,j]分成两个子列,判断基准数在数组的位置 p 和(k-1)的大小;
若 p == k-1,则 s[p] 就是第 k 大的数;
若 p < k-1 ,则在 s[p+1,j] 中查找;
若 p > k-1, 则在 s[i,p-1] 中查找;
2.代码:
void find_Kth(int a[],int l,int r,int n) { if(l <= r) { int i=l,j=r,x=a[i]; while(i < j) { while(i<j && a[j]>=x) j--; if(i<j){ a[i] = a[j]; i++; } while(i<j && a[i]<=x) i++; if(i<j){ a[j] = a[i]; j--; } } a[i] = x; if(i < n-1) find_Kth(a,i+1,r,n); else if(i > n-1) find_Kth(a,l,i-1,n); else if( i==(n-1)) cout << "第 " << n << " 大的数为:" << a[i] << endl; } }
0 0
- 查找--第K大的元素
- 查找第K大的元素
- 查找第 k 大的元素
- 查找第K大元素
- 算法之查找第k大的元素
- 查找给定区间内第K大的元素
- 查找数组中第K大元素
- 线性时间查找第k大元素
- BFPRT算法查找第k大元素
- 查找数组中第K大和第K小的元素
- 第k大的元素
- 查找第K元素
- Find K-th Smallest Pair Distance:查找数组元素中差值第K大的两个元素的差值
- 查找第K小的元素
- 第k大元素
- 第k大元素
- 第k大元素
- 查找两个已经排好序的数组的第k大的元素
- 旋转数组
- 高效运维最佳实践(03):Redis集群技术及Codis实践
- IOS开发UI进阶之UITableView二
- BC - A problem of sorting(模拟题)
- 关于项目中出现一些非代码造成的错误
- 查找第 k 大的元素
- JS+jQuery+Easyui实现动态添加控件及赋值
- Visual Studio Attach Progress Debug
- expect的命令行参数
- Objective-C 面向对象
- HDU 5427 A problem of sorting(字符串处理+排序)——BestCoder Round #54(div.2)
- POJ 3252 Round Numbers (数位dp)
- 相机模型与标定(一)--相机标定概述
- BC - The Factor(模拟题 + 素数)