快排,该怎么处理
快排
这是我写的一个快排,但不知为什么无法输出???求指教/
#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
------解决思路----------------------
这是我写的一个快排,但不知为什么无法输出???求指教/
#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
------解决思路----------------------