纯快排

#include<iostream>
#include<cstring>
#include<stack>
#include<cstdio>
#include<cmath>
using namespace std;
#define MAX 100005
int partition(int A[],int n,int p,int r)
{
    int i,j;
    int t,x;
    x=A[r];
    i=p-1;
    for(j=p;j<r;j++)
    {
        if(A[j]<=x)
        {
            i++;
            //t=A[i];A[i]=A[j];A[j]=t;
            swap(A[i],A[j]);
        }
    }
    //t=A[i+1];A[i+1]=A[r];A[r]=t;
    swap(A[i+1],A[r]);
    return i+1; 
}
void quickSort(int A[],int n,int p,int r)
{
    int q;
    if(p<r)
    {
        q=partition(A,n,p,r);
        quickSort(A,n,p,q-1);
        quickSort(A,n,q+1,r);
    }
}

int main()
{
  int n;
  int A[MAX];
  cin>>n;
  for(int i=0;i<n;i++)
  {
   scanf("%d",&A[i]);
  }
  quickSort(A,n,0,n-1);
  for(int i=0;i<n;i++)
  {
      if(i)
      cout<<" ";
      cout<<A[i];
  }
  cout<<endl;
return 0;
 } 

但洛谷那道题还是超时,后面还是用以前写的归并排序过的(其实我之前用sort过的

原文地址:https://www.cnblogs.com/hh13579/p/10806780.html