第一种:(易懂版)
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int partition(int a[], int low, int high){
int k = a[low];
while(low < high){
while(low < high && a[high] > k) --high;
a[low] = a[high];
while(low < high && a[low] < k) ++low;
a[high] = a[low];
}
a[low] = k;
return low;
}
void quicksort(int arr[], int low, int high)
{
if(low < high)
{
int position = partition(arr, low, high);
quicksort(arr, low, position - 1);
quicksort(arr, position + 1, high);
}
}
int main()
{
int i,j,n,m;
int a[10000];
cin >>n;
for(i=0;i<n;i++)
cin>> a[i];
quicksort(a,0,n-1);
for(i=0;i<n;i++)
cout << a[i];
return 0;
}
第二种:(模板类)
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
#include <string>
#define ll long long int
using namespace std;
ll a[100100];
void quick_sort(int x,int y)
{
int i=x,j=y,t;
int k=a[x];
if(i>=j)
return;
while (i<j)
{
while((i<j)&&a[j]>=k)
j--;
t=a[i];
a[i]=a[j];
a[j]=t;
while((i<j)&&(a[i]<k))
i++;
t=a[i];
a[i]=a[j];
a[j]=t;
}
quick_sort(x,i-1);
quick_sort(i+1,y);
return;
}
int main()
{
ll i,j,n,m,k;
scanf("%lld",&n);
for(i=0;i<n;i++)
scanf("%lld",&a[i]);
quick_sort(0,n-1);
for(i=0;i<n;i++)
printf("%lld ",a[i]);
return 0;
}