首页 > 用户发贴区 > 编程问题提问区 > 函数递归实现分割法排序
2008
09-13

函数递归实现分割法排序

      想用函数递归实现分割法排序,首先对于数组的第一个元素,求出它在最终排序完之后的位置,即将大于它全排在它的右边,小于它的排在左边。再对被他分割而成的两个小数组实行相同操作,但总觉得递归用得有问题但又找不出在哪儿?请大家指教


#include <stdio.h>
void Quicksort(int *num,int startpos,int endpos)
{
 do
 {
  int i,temp,mid;
  int start=startpos;
  int end=endpos;
  while(start!=end)
  {
   for(i=end;i>=start;i–)
   {
    if(num[start]>=num[i])
    {
     end=i;
     temp=num[start];
     num[start]=num[i];
     num[i]=temp;  
     break;
    }
   }
   
   for(i=start;i<=end;i++)
   {
    if(num[i]>=num[end])
    {
     start=i;
     temp=num[end];
     num[end]=num[i];
     num[i]=temp;
     break;
    }
   }
   mid=start;
   Quicksort(num,startpos,mid-1);
   Quicksort(num+start+1,mid+1,endpos);
  }
  
 }while(startpos>endpos);
}
main(void)
{
 int num[10]={12,32,43,56,76,23,44,64,30,28};
 int i;
 for(i=0;i<10;i++)
  printf(“%4d”,num[i]);
 printf(“\n”);
 Quicksort(num,0,9);
 for(i=0;i<10;i++)
  printf(“%d”,num[i]);
}


留下一个回复