【排序】快速排序:第k个数_ci

快速排序后输出a[k-1]

时间复杂度o(nlogn)

#include<iostream>
using namespace std;
int n;
int k;
int a[100001];
void quick_sort(int a[],int l,int r){
    if(l>=r)return;
    int x=a[(l+r)/2];
    int i=l-1;
    int j=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]);
    }
    quick_sort(a,l,j);
    quick_sort(a,j+1,r);
}
int main(){
    cin>>n>>k;
    for(int i=0;i<n;i++){
        cin>>a[i];
    }
    quick_sort(a,0,n-1);
    cout<<a[k-1];
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.