zoukankan      html  css  js  c++  java
  • P1923 【深基9.例4】求第 k 小的数&&P1177 【模板】快速排序

    First
    Second


    快速排序还是很重要的

    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    #include<cstdio>
    using namespace std;
    int zn[5000001];
    int n,Aimee;
    void qs(int l,int r){
    	int ll=l;int rr=r;int mid=zn[(l+r)/2];
    	do{
    		while(zn[rr]>mid){
    			rr--;
    		}
    		while(zn[ll]<mid){
    			ll++;
    		}
    		if(ll<=rr){
    			swap(zn[ll],zn[rr]);
    			ll++;
    			rr--;
    		}
    	}while(ll<=rr);
    	if(l<rr) qs(l,rr);
    	 if(r>ll)
    	qs(ll,r);
    }
    int main(){
    	scanf("%d",&n);
    	for(int i=1;i<=n;++i){
    		scanf("%d",&zn[i]);
    	}
    	qs(1,n); 
    	for(int i=1;i<=n;++i){
    		cout<<zn[i]<<" ";
    	}
    	return 0;
    }
    
    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    #include<cstdio>
    using namespace std;
    int zn[5000001];
    int n,Aimee;
    void qs(int l,int r,int aim){
    	int ll=l;int rr=r;int mid=zn[(l+r)/2];
    	do{
    		while(zn[rr]>mid){
    			rr--;
    		}
    		while(zn[ll]<mid){
    			ll++;
    		}
    		if(ll<=rr){
    			swap(zn[ll],zn[rr]);
    			ll++;
    			rr--;
    		}
    	}while(ll<=rr);
    	if(aim<=rr) qs(l,rr,aim);
    	else if(aim>=ll)
    		qs(ll,r,aim);
    	else{
    		cout<<zn[rr+1];
    		exit(0);
    	}
    }
    int main(){
    	scanf("%d%d",&n,&Aimee);
    	for(int i=1;i<=n;++i){
    		scanf("%d",&zn[i]);
    	}
    	qs(1,n,Aimee+1); 
    	return 0;
    }
    
  • 相关阅读:
    第十周作业
    第九周编程作业与总结
    第八周编程作业及总结
    第七周编程总结
    第五周课程总结&试验报告(三)
    第四周课程总结&试验报告(二)
    第三周学习总结
    Java第二周学习总结
    2019年学习总结
    第十二周作业
  • 原文地址:https://www.cnblogs.com/For-Miku/p/13916424.html
Copyright © 2011-2022 走看看