我对于出现的交换问题完全不知道是怎么回事。难道是引用和指针的问题?
首先附上图:
1)出错报告:
2)在出错前的一些数据:
void qs(int *p,int n)//递归快速排序
{
int s;
s=parttion(p,n); //s为个数,在下标的基础上加了1
qs(p,s);
qs(p+s+1,n-s-1);
}
------------------------------------------------
int parttion(int *p,int n)//寻找分裂点
{
int te=p[0],i=1,j=n-1;
while(i<j)
{
while(p[i]<te&&i<=n-1)
i++;
while(p[j]>te)
j--;
if(i<j)
exchange(p[i],p[j]);//调用出错
}
exchange(p[0],p[j]);//调用交换这个函数,出现错误
return j+1;
}
---------------------------------------------------
void exchange(int &a,int &b)//交换两个数据
{
int temp;
temp=a;
a=b;
b=temp;
}
------------------------------------------------------
int main(void)
{
int a[3]={3,2,9};
qs(a,3);
for(int i=0;i<3;i++)
cout<<a[i];
system("pause");
return 0;
}