1 条题解

  • 1
    @ 2025-6-6 18:22:35

    很经典的排序题,用快排就o了 参考可以,但别照抄

    #include <bits/stdc++.h>
    using namespace std;
    
    int n,k,a[100005];
    
    void qs(int l,int r){
    	if(l>=r) return;
    	int i=l,j=r;
    	int mid=a[(l+r)/2];
    	while(i<=j){
    		while(a[i]>mid) i++;
    		while(a[j]<mid) j--;
    		if(i<=j){
    			swap(a[i],a[j]);
    			i++;
    			j--;
    		}
    	}
    	qs(l,j);
    	if (i<=k) qs(i,r);
    }
    
    int main(){
    	cin>>n;
    	for(int i=1;i<=n;++i) cin>>a[i];
    	cin>>k;
    	qs(1,n);
    	for(int i=1;i<=k;++i) cout<<a[i]<<endl;
    	return 0;
    }
    
    • 1

    信息

    ID
    225
    时间
    1000ms
    内存
    128MiB
    难度
    8
    标签
    (无)
    递交数
    16
    已通过
    8
    上传者