背景:与上一个1280相关,水过。练习写快排速度
学习
#include<stdio.h> void quicksort( int str[],int n); void quicksort( int str[],int n) { int p1=0,p2=n-1; int key=str[p1]; if(p1<p2) { while(p1<p2) { for(;p1<p2;--p2) { if(str[p2]>key) { str[p1++]=str[p2]; break; } } for(;p1<p2;++p1) { if(str[p1]<key) { str[p2--]=str[p1]; break; } } } str[p1]=key; quicksort(str,p1); quicksort(str+p1+1,n-p1-1); } } int str[1000001]; int main(void) { int n,m; while(scanf("%d %d",&n,&m)==2) { for(int i=0;i<n;++i) { scanf("%d",&str[i]); } quicksort(str,n); int k=1; for(int l=0;l<=m-1;++l) { if(k) { printf("%d",str[l]); --k; } else { printf(" %d",str[l]); } } printf("\n"); } }
:
1.快排的时候有一个易错点就是对每一个回合忘了把key安放回去。