#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
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
原文地址: https://blog.csdn.net/u010993034/article/details/9276167
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。