第一遍时间超限
#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;
}