c++快速排序算法是递归的 怎么样能输出每一趟的排序结果呢

来源:百度知道 编辑:UC知道 时间:2024/07/16 10:55:47

最简单的办法,加输出语句在递归之后,
在递归退栈时依次输出

不过这样是逆序的

如果是你自己写递归函数:在调用函数语句之前或者递归函数入口,例如下例中的A或B处

myqsort(XX) {
A;
...
...
B;
myqsort(XX)
...
};

如果用的是现成那个qsort,只有改头文件了

给你一个代码 其实根本不用在递归里输出,排好了再输出
#include <iostream>
using namespace std;
void qsort(int a[],int i,int j)
{
int p=i,q=j,num=a[(i+j)/2],temp;
while(q>=p)
{
while(a[p]<num) p++;
while(a[q]>num) q--;
if(q>=p)
{
temp=a[p];
a[p]=a[q];
a[q]=temp;
p++;
q--;
}
}
if(q>i) qsort(a,i,q);
if(j>p) qsort(a,p,j);
}
int main()
{
int n,a[10000];
cin>>n;
int i;
for(i=0;i<n;i++)
cin>>a[i];
qsort(a,0,n-1);
for(i=0;i<n;i++)
cout<<a[i]<<' ';
system("pause");
return 0;
}

要是每次都输出的话那就不是你向要通过递归来完成的了

代码