赞
踩
左边子序列(无序)都 <轴值; 右边子序列都 >轴值
最好(平均)O(nlog2n)
最坏 O(n*2) 与轴值的选取有关
可以把快排看成 递归二叉树。
#include <stdio.h> #include <stdlib.h> int partitions(int *a,int first,int end) { int i,j,t; i=first; j=end; while(i<j) { while(i<j && a[i]<=a[j]) j--; if(i<j) { t=a[i]; a[i]=a[j];a[j]=t; i++; } while(i<j &&a[i]<=a[j]) i++; if(i<j) { t=a[i]; a[i]=a[j];a[j]=t; j--; } } return i; } void quickSort(int r[],int first,int end) { int pos; if(first<end) //递归出口 { pos=partitions(r,first,end); quickSort(r,first,pos-1); quickSort(r,pos+1,end); } } int main() { int i; int s[8]={3,7,34,52,85,12,62,65}; quickSort(s,0,7); for(i=0;i<8;i++) printf("%d ",s[i]); return 0; }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。