[模板题]第K个数
程序员文章站
2024-03-03 18:15:40
...
来源:模板题
算法标签:快排,快速选择
题目描述:
思路
快排模板,找K时注意递归
代码
#include<iostream>
using namespace std;
const int N=1E5+10;
int a[N];
int quick_sort_k(int a[],int l,int r,int k)
{
if(l==r)return a[l];
int i=l-1,j=r+1,x=a[l+r>>1];
while(i<j)
{
do i++;while(a[i]<x);
do j--;while(a[j]>x);
if(i<j)swap(a[i],a[j]);
}
int sl=j-l+1;//左半部分的值
if(k<=sl)return quick_sort_k(a,l,j,k);//递归左半部分
else return quick_sort_k(a,j+1,r,k-sl);//递归右半部分
}
int main()
{
int n,k;
cin>>n>>k;
for(int i=0;i<n;i++)cin>>a[i];
cout<<quick_sort_k(a,0,n-1,k);
return 0;
}
推荐阅读
-
[模板题]第K个数
-
洛谷 P384 静态区间第K小 //可持久化线段树(无修改静态) + 离散化 (模板)
-
HDU 2665 主席树(求区间第k大模板)
-
给定一个序列,每次询问序列中第l个数到第r个数中第K大的数是哪个。
-
[Leedcode][第215题][JAVA][数组中的第K个最大元素][快排][优先队列]
-
[排序 手写堆 快排模板] 215. 数组中的第K个最大元素(堆排序、快速排序 + 分治)
-
九章算法 | Amazon 面试题:排序矩阵中的从小到大第k个数
-
巧用TreeSet求解第k小整数(洛谷P1138题题解,Java语言描述)
-
二叉搜索树的第k个结点(剑指offer第63题)
-
20180723剑指offer题30——最小的k个数