AcWing 786. 第k个数
查找数组中第k个数,可以利用基于快速排序思想的快速选择算法。
注意事项同快排完全相同一样
int QuickFindK(int nums[],int l,int r,int k)
{
if(l==r&&l==k)
return nums[k];
int left=l-1,right=r+1;
int key=nums[r];
while(left<right)
{
while(nums[++left]<key);
while(nums[--right]>key);
if(left<right)
swap(nums[left],nums[right]);
}
if(left>k)
return QuickFindK(nums,l,left-1,k);
else
return QuickFindK(nums,left,r,k);
}

浙公网安备 33010602011771号