快排,该怎么处理

快排
这是我写的一个快排,但不知为什么无法输出???求指教/
#include<iostream>
using namespace std;
void sort(int a[],int LP,int RP)
{
     int l=LP;int p=RP;int k=a[l];
     do
     {
         while(l<p&&a[p]>=k)
               p=p-1;
         if(l<p)
              {a[l]=a[p];l++;}
         while(l<p&&a[l]<=k)
               l=l+1;
         if(l<p)
             {a[p]=a[l];p--;} 
     }while(l!=p);
     a[p]=k;
     sort(a,LP,l-1);
     sort(a,l+1,RP);
}
int main(){
    int m,n,i,j;
    int a[10000]={0};
    cin>>m;
    for(i=0;i<m;i++)
    {
          cin>>n;
          for(j=0;j<n;j++)
              cin>>a[j];
          sort(a,0,n-1);
          for(j=0;j<n;j++)
              cout<<a[j];     
    }
}
------解决思路----------------------

http://www.microsoft.com/visualstudio/chs/downloads#d-2010-express
点开Visual C++ 2010 Express下面的语言选‘简体中文’,再点立即安装

再参考C:\Program Files\Microsoft Visual Studio 10.0\VC\crt\src\qsort.c

------解决思路----------------------
Quote: 引用:

这是我写的一个快排,但不知为什么无法输出???求指教/

#include<iostream>
using namespace std;
void sort(int a[],int LP,int RP)
{
 if(LP<RP)  ///你少加了最前面这个判断,要不你这个程序一直会递归下去
 {
int l=LP;int p=RP;int k=a[l];
do
{
while(l<p&&a[p]>=k)
p=p-1;
if(l<p)
{a[l]=a[p];l++;}
while(l<p&&a[l]<=k)
l=l+1;
if(l<p)
{a[p]=a[l];p--;} 
}while(l!=p);
a[l]=k;///你这里写错了啊
sort(a,LP,l-1);
sort(a,l+1,RP);
}
}
void main()
{
int a[10]={88,3,4,334,9,0,23,45,35,67};
sort(a,0,9);
int i;
for(i=0;i<10;i++)
cout<<a[i]<<" ";
while(1);
}