回 帖 发 新 帖 刷新版面

主题:快速排序实现字符串的排序,望赐教(有代码)

void QuickSort(char* p[],int s,int t)
{
  int i=s,j=t+1;
  char* x=p[s];
  do
  {
      do i++;while(strcmp(p[i],x)<0);
      do j--;while(strcmp(p[j],x)>0);
      if(i<j)
      {
          char* temp=p[i];
          p[i]=p[j];p[j]=temp;
      }
  }while(i<j);
  p[s]=p[j];p[j]=x;
  if(s<j-1) QuickSort(p,s,j-1);
  if(j+1<t) QuickSort(p,j+1,t);
}
void main()
{
    int i;
 
   char* p[5];
   for(i=0;i<5;i++)
       scanf("%s",p[i]);
   QuickSort(p,0,4);
   for(i=0;i<5;i++)
      printf("%s ",p[i]);

}

不知道怎么回事,一运行就弹出发送错误报告的消息,望指教!!

回复列表 (共2个回复)

沙发

do i++;while(strcmp(p[i],x)<0);
      do j--;while(strcmp(p[j],x)>0);

没有判断下标是否越界

板凳

是的,没有判断边界情况:
应该
         do i++;while((strcmp(p[i],x)<0)&&(i<t));
         do j--;while((strcmp(p[j],x)>0)&&(j>s));

我来回复

您尚未登录,请登录后再回复。点此登录或注册