读书人

快速排序,该怎么处理

发布时间: 2012-02-09 18:22:27 作者: rapoo

快速排序

C/C++ code
   int find(int *a,int low,int high)   {      int x=a[low];      while(low<high)      {          while(low<high && a[high]>=x)              --high;          a[low]=a[high];          while(low<high && a[low]<=x)              ++low;          a[high]=a[low];      }   }   void q_sort(int *a,int low,int high)   {      int pos;      if(low <high)  //把这个去掉 为什么会出现段错误了,,在主程序q_sort(a,0,9)                      //这样调用,没low <high 也应该不会错啊,, 去掉low <high                     //的判断,究竟是哪个地方会出错,,      {         pos=find(a,low,high);         q_sort(a,low,pos-1);         q_sort(a,pos+1,high);      }   }


[解决办法]
去掉这个if后
你这程序就无限递归下去了
另外 find 方法咋没有返回呢

读书人网 >软件架构设计

热点推荐