c/c++数据结构和算法的快速排序例子

作者:袖梨 2022-06-25

找到一个 “基准”(pivot),所有元素比基准值小的摆放在基准左边,大的放在右边,然后递归排序
c语言版本

#include
void QuickSort(int *s,int l,int r);
int main(void)
{
 int i;
 int k[]={8,65,4,2,0,1,3,5,7,9,25};
    QuickSort(k,0,10);
 for(i=0;i<11;i++)
  printf("%dn",k[i]);
 return 0;
}

void QuickSort(int *s,int l,int r)
{
   int i,j,pivot;
   if(l    {
    i=l;
    j=r;
    pivot=s[i];
    while(i     {
  while(ipivot) j--;//从右向左找第一个小于pivot的数
  if(i   {
     s[i]=s[j];
     i++;
  }
  while(i   if(i   {
     s[j]=s[i];
     j--;
  }
    }
    s[i]=pivot;
    QuickSort(s,l,i-1);
    QuickSort(s,i+1,r);
   }
}

相关文章

精彩推荐