首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

快速排序——数据交换出错,该如何解决

2013-11-25 
快速排序——数据交换出错我对于出现的交换问题完全不知道是怎么回事。难道是引用和指针的问题?首先附上图:1)

快速排序——数据交换出错
我对于出现的交换问题完全不知道是怎么回事。难道是引用和指针的问题?
首先附上图:
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;
} 刚试了一下 你的代码 进入了死循环了  你自己去 跟踪一下
[解决办法]
先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

热点排行