测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A23615. #include<bits/stdc++.h> using namespace std; const int N=1e6+5; int n,k; int nums[N]; int partition(int left,int right){ int pivot=nums[right]; int i=left-1; for(int j=left;j<right;j++){ if(nums[j]<p…

判断题 较易

题目描述

#include<bits/stdc++.h>
using namespace std;
const int N=1e6+5;
int n,k;
int nums[N];
int partition(int left,int right){
    int pivot=nums[right];
    int i=left-1;
    for(int j=left;j<right;j++){
        if(nums[j]<pivot){
            i++;
            swap(nums[i],nums[j]);
        }
    }
    swap(nums[i+1],nums[right]);
    return i+1;
}
int quickSelect(int left, int right, int k) {
    if (left == right) {
        return nums[left];
    }
    int pivotIndex = partition(left, right);
    if (k == pivotIndex) {
        return nums[k];
    } else if (k < pivotIndex) {
        return quickSelect(left, pivotIndex - 1, k);
    } else {
        return quickSelect(pivotIndex + 1, right, k);
    }
}
int main() {
    cin>>n>>k;
    for(int i=1;i<=n;i++) cin>>nums[i];
    int ans=quickSelect(1, n, k);
    cout<<ans<<endl;
    return 0;
}
保证输入的n不超过10 6 ^6 6,k不超过n,且 (1 ≤ \leq≤ ai_i i≤ \leq≤ 10 9 ^9 9)。完成下面的题目。

上述代码正确运行后,可以将num数组按从小到大的顺序排序。(    )

选项(单选)

上一题 下一题