第一遍时间超限
#include<stdio.h> int a[100010]; void Quick_Sort(int left,int right) { if(left>=right) { return; } int f=a[left]; int l=left,r=right; while(l!=r) { while(a[r]>=f&&l<r) r--; while(a[l]<=f&&l<r) l++; int t=a[l]; a[l]=a[r]; a[r]=t; } a[left]=a[l]; a[l]=f; Quick_Sort(left,l-1); Quick_Sort(l+1,right); } int main() { int N; scanf("%d",&N); for(int i=1;i<=N;i++) { scanf("%d",&a[i]); } Quick_Sort(1,N); for(int i=1;i<=N-1;i++) { printf("%d ",a[i]); } printf("%d\n",a[N]); return 0; }
第二遍过了
#include<stdio.h> int a[100010]; void Quick_Sort(int left,int right) { if(left>=right) { return; } int num=a[(left+right)/2]; int l=left,r=right; do { while(a[r]>num) r--; while(a[l]<num) l++; if(r>=l) { int t=a[r]; a[r]=a[l]; a[l]=t; r--,l++; } }while(l<=r); if(left<r) Quick_Sort(left,r); if(l<right) Quick_Sort(l,right); } int main() { int N; scanf("%d",&N); for(int i=1;i<=N;i++) { scanf("%d",&a[i]); } Quick_Sort(1,N); for(int i=1;i<=N-1;i++) { printf("%d ",a[i]); } printf("%d\n",a[N]); return 0; }