快排序(递归算法)
#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; }
作者:cpoint
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.