注册 登录
编程论坛 C++教室

[求助]谁能看一下这个快速排序的程序

love154139 发布于 2007-07-03 17:25, 406 次点击

#include <iostream>
using namespace std;
#define n 10

void pin(int a[],int s,int t);

void main()
{
int b[n],i;
cout<<"请输入一组数:"<<endl;
for(i=0;i<n;i++)
{
cin>>b[i];
if(b[i]==0)
break;
}
int s=0,t=i;
pin(b,s,t); ///进不了函数体的??
for(i=0;i<t;i++)
cout<<b[i]<<" ";
}

void pin(int a[],int s,int t)
{
int i,j,x;
i=s;
j=t+1;
x=a[s];
do
{
do i++;
while(a[i]<x);
do j--;
while(a[i]>x);
if(i<j)
{
int m=a[i];
a[i]=a[j];
a[j]=m;
}
}while(i<j);
a[s]=a[j];
a[j]=x;
if(s<j-1)
pin(a,s,j-1);
if(j+1<t)
pin(a,j+1,t);
}

我单步执行的时候到红线那部分就停止了。...进不了函数体...谁能告诉我什么??

2 回复
#2
aipb20072007-07-03 20:50
不是那里错了吧,调用没问题的。
再调试调试。
#3
love1541392007-07-03 21:17
回复:(love154139)[求助]谁能看一下这个快速排序的...
我知道错哪了..呵呵..谢谢提醒拉......
程序是错在
void pin(int a[],int s,int t)
{
int i,j,x;
i=s;
j=t+1;
x=a[s];
do
{
do i++;
while(a[i]<x);
do j--;
while(a[i]>x); ///忘了把j换成i了
if(i<j)
{
int m=a[i];
a[i]=a[j];
a[j]=m;
}
}while(i<j);
a[s]=a[j];
a[j]=x;
if(s<j-1)
pin(a,s,j-1);
if(j+1<t)
pin(a,j+1,t);
}
1