题目描述
给定N个长整型范围内的整数,要求输出以给定数据中第一个数为枢轴进行一趟快速排序之后的结果。
输入
输出
输出一趟快速排序后的结果,数字间以一个空格间隔,行末不得有多余空格。
示例输入
8
49 38 65 97 76 13 27 49 
示例输出
27 38 13 49 76 97 65 49 
提示
 
 
 
 
 
#include <iostream>
 #include<cstring>
 #include<cstdio>
 #include<cstdlib>
 using namespace std;
 int a[10001];
 void q(int a[],int l,int r)
 {
     int k=a[l],i=l,j=r;
     if(r<=l) return;//注意等号的取舍;
     while(i<j)
     {
         while(i<j&&a[j]>=k) j--;
         a[i]=a[j];
         while(i<j&&a[i]<=k) i++;
         a[j]=a[i];
     }
     a[i]=k;
 }
 int main()
 {
     int n;
     while(~scanf("%d",&n))
     {
         for(int i=0;i<n;i++)
             scanf("%d",&a[i]);
         q(a,0,n-1);
         for(int i=0;i<=n-2;i++)
             printf("%d ",a[i]);
         printf("%d\n",a[n-1]);
     }
     return 0;
 }