#include<iostream> #include<cstring> #include<stack> #include<cstdio> #include<cmath> using namespace std; #define MAX 100005 int partition(int A[],int n,int p,int r) { int i,j; int t,x; x=A[r]; i=p-1; for(j=p;j<r;j++) { if(A[j]<=x) { i++; //t=A[i];A[i]=A[j];A[j]=t; swap(A[i],A[j]); } } //t=A[i+1];A[i+1]=A[r];A[r]=t; swap(A[i+1],A[r]); return i+1; } void quickSort(int A[],int n,int p,int r) { int q; if(p<r) { q=partition(A,n,p,r); quickSort(A,n,p,q-1); quickSort(A,n,q+1,r); } } int main() { int n; int A[MAX]; cin>>n; for(int i=0;i<n;i++) { scanf("%d",&A[i]); } quickSort(A,n,0,n-1); for(int i=0;i<n;i++) { if(i) cout<<" "; cout<<A[i]; } cout<<endl; return 0; }
但洛谷那道题还是超时,后面还是用以前写的归并排序过的(其实我之前用sort过的)