快排序(递归算法)

#include<stdio.h>
#include<math.h>
#define N 10
void quicksort(int a[],int low,int high);
int split(int a[],int low,int high);
main()
{
  int a[N],i;
  printf("Enter %d numbers to be sorted: ",N);
  for(i=0;i<N;i++)
  {
    scanf("%d",&a[i]);
  }
  quicksort(a,0,N-1);
  printf("In sorted order: ");
  for(i=0;i<N;i++)
  {
    printf("%d  ",a[i]);

  }
  printf("\n");
  getch();
}
void quicksort(int a[],int low,int high)
{
   int middle;
   if(low>=high)return;
   middle=split(a,low,high);
   quicksort(a,low,middle-1);
   quicksort(a,middle+1,high);
 }
int split(int a[],int low,int high)
{
   int part_element=a[low];
   for(;;){
   while(low<high&&part_element<=a[high])
     high--;
   if(low>=high) break;
   a[low++]=a[high];

   while(low<high&&a[low]<=part_element)
     low++;
   if(low>=high) break;
   a[high--]=a[low];
   }
   a[high]=part_element;
   return high;
}
    原文作者:递归算法
    原文地址: https://blog.csdn.net/u010993034/article/details/9276167
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞