// qsort.cpp : 定义控制台应用程序的入口点。
//
#include "iostream"
using namespace std;
#include<stdio.h>
void qsort(int *num,int low,int high);
int onestep(int *num,int low,int high);
int main()
{
int num[1000];
int numx;
while(true)
{
cin>>numx;
if(numx>=1&&numx<=1000)
{
for(int i=0;i<numx;i++)
cin>>num[i];
qsort(num,0,numx-1);
for(int i=0;i<numx;i++)
printf("%d ",num[i]);
printf("\b\n");
}
}
return 1;
}
void qsort(int *num,int low,int high)
{
if(low<high)
{
int post=onestep(num,low,high);
qsort(num,low,post-1);
qsort(num,post+1,high);
}
}
int onestep(int *num,int low,int high)
{
//int x=low;
int y=num[low];
while(low<high)
{
while(low<high&&num[high]>=y)
high--;
if(low<high)
{
num[low]=num[high];
// x=high;
low++;
}
while(low<high&&num[low]<=y)
low++;
if(low<high)
{
num[high]=num[low];
//x=low;
high--;
}
}
num[low]=y;
return low;
//
#include "iostream"
using namespace std;
#include<stdio.h>
void qsort(int *num,int low,int high);
int onestep(int *num,int low,int high);
int main()
{
int num[1000];
int numx;
while(true)
{
cin>>numx;
if(numx>=1&&numx<=1000)
{
for(int i=0;i<numx;i++)
cin>>num[i];
qsort(num,0,numx-1);
for(int i=0;i<numx;i++)
printf("%d ",num[i]);
printf("\b\n");
}
}
return 1;
}
void qsort(int *num,int low,int high)
{
if(low<high)
{
int post=onestep(num,low,high);
qsort(num,low,post-1);
qsort(num,post+1,high);
}
}
int onestep(int *num,int low,int high)
{
//int x=low;
int y=num[low];
while(low<high)
{
while(low<high&&num[high]>=y)
high--;
if(low<high)
{
num[low]=num[high];
// x=high;
low++;
}
while(low<high&&num[low]<=y)
low++;
if(low<high)
{
num[high]=num[low];
//x=low;
high--;
}
}
num[low]=y;
return low;
}
http://acmoj.shu.edu.cn/openjudge/problemlist.php
http://acm.sjtu.edu.cn/OnlineJudge/problem/1024