qsort,两个TLE,怎么改

P1923 【深基9.例4】求第 k 小的数

XSean @ 2022-08-30 12:40:40


#include<bits/stdc++.h>
using namespace std;
int arr[5000001];
void qsort(int l,int r){
    int i=l,j=r;
    int mid=arr[(l+r)/2];
    while(i<j){
        while(arr[i]<mid) i++;
        while(arr[j]>mid) j--;
        if(i<=j){
            swap(arr[i],arr[j]);
            i++;j--;
        }
    }
    if(l<j) qsort(l,j);
    if(i<r) qsort(i,r);
}
int main(){
int n,p;
cin>>n>>p;
for(int i=0;i<n;i++) cin>>arr[i];
qsort(0,n-1);
cout<<arr[p];

    return 0;
}

by TLEWA @ 2022-08-30 13:01:21

@Sean_xzx 正解复杂度 O(n)


by SegTree @ 2022-08-30 13:40:40

@Sean_xzx 快读+O2


by Lovely_Chtholly @ 2022-08-30 14:47:54

@jpb_Saturn 正确的,快读不开O2亲测80分,开O2即可AC

开 O2 过这道题的,你们最好想想你们来写这道题是为了学会怎么 O(n) 求第 k 小数还是学会开 O2

——时律


by lightcloud @ 2022-09-17 18:26:30

归并+o2


|