Problem Description
输入一个整数序列,选用待排序列的第一个元素作为枢轴记录,按照元素递增的顺序,输出第一趟快速排序的结果。
Input
输入数据元素存放在一行,元素间用一个空格间隔。
Output
快速排序第一趟排序后数据序列,元素间用一个空格间隔,最后一个元素后面没有空格,输出之后换行。
Sample Input
45 80 48 40 22 78
Sample Output
22 40 45 48 80 78
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
using namespace std;
int a[100001];
void pai(int a[],int left,int right)
{
int i,j,x;
i=left;
j=right;
x=a[left];
if(i<j)
{
while(i<j)
{
while(i<j&&a[j]>=x)
j--;
a[i]=a[j];
while(i<j&&a[i]<=x)
i++;
a[j]=a[i];
}
a[i]=x;
}
}
int main()
{
int n,i;
for(i=0;scanf("%d",&a[i])!=EOF;i++);
n=i;
pai(a,0,n-1);
for(i=0;i<n;i++)
{
if(i==n-1)
printf("%d\n",a[i]);
else
printf("%d ",a[i]);
}
return 0;
}