新人求助:声明的函数无法调用,编译没有出错,不知道为什么运行到sort()就直接跳过了
程序代码://排序一系列行数据,数据有n行,每行有1-50个数,以-1结尾
#include <stdio.h>
int sortnum[1000][50];
int priority[1000]; //大小优先矩阵,位子越前面越小
void sort(int lb,int hb);
bool comp(const bool &n1,const bool &n2); //声明比较函数和排序函数
int main(int argc, char* argv[])
{ int n,p,i,j,count; //p
int firstprint=1;
scanf("%d",&n); //忽略第一行
while(scanf("%d",&n))
{ for(i=0;i<n;i++)
{ priority[i]=i;
count=0;
while(scanf("%d",&p)) //读取数据
{ sortnum[i][count++]=p;
if(p==-1)
break;
}
}
sort(0,n-1); //排序,但在我用的visual studio 2008中执行没有跳到sort子函数中,求解
for(i=0;i<n;i++) //输出
{ firstprint=1;
for(j=0;sortnum[priority[i]][j]!=-1;j++)
{ if(firstprint==1)
firstprint=0;
else printf(" ");
printf("%d",sortnum[priority[i]][j]);
} //for j
printf("\n");
} //for i
} //while
return 0;
}
void sort(int lb,int hb) //排序函数,快速排序
{ int t,i=lb,j=hb,count=0;
if(i<j)
{ t=priority[lb];
while(i<j)
{ while(i<j)
if(comp(t,priority[j])==0)
j--;
else
{ priority[i]=priority[j];
i++;
break;
}
while(i<j)
if(comp(t,priority[i])==1)
i++;
else
{ priority[j]=priority[i];
j--;
break;
}
}//i<j
priority[i]=t;
sort(lb,i-1);
sort(i+1,hb);
}
}
bool comp(const bool &n1,const bool &n2) //比较函数,优先比较行序列第一个数
{ int count=0;
while(sortnum[n1][count]==sortnum[n2][count])
if(sortnum[n1][count]!=-1)
count++;
else break;
return sortnum[n1][count]!=sortnum[n2][count]?sortnum[n1][count]>sortnum[n2][count]:sortnum[n1][count]>sortnum[n2][count];
}







