快速排序
思路清晰.
思想:分治。
效率:O(N*logN)
#include<stdio.h> int part(int a[],int l,int r) { int temp,i,j; temp=a[l]; i=l; j=r; while(i<j) { while(i<j&&a[j]>=temp) j--; if(i<j) { a[i]=a[j]; i++; } while(i<j&&a[i]<=temp) i++; if(i<j) { a[j]=a[i]; j--; } } a[i]=temp; return i; } quick(int a[],int l,int r) { if(l<r) { int i=part(a,l,r); quick(a,l,i-1); quick(a,i+1,r); } } int main() { int a[100],n,n1,i=0; printf("please input the num of a[]:"); scanf("%d",&n); n1=n; while(n1--) { scanf("%d",&a[i]); i++; } quick(a,0,n-1); for(i=0;i<n;i++) printf("%d ",a[i]); return 0; }