void sort(int l,int r){
int i,j,x,temp;
i=l,j=r;
x=a[(l+r)/2];
do{
while(a[i]<x) i++;
while(a[j]>x) j--;
if(i<=j){
swap(a[i],a[j]);
i++;j--;
}while(i<j)
if(l<j) sort(l,j);
if(r>i) sort(i,r);
}
}


快速排序的基本策略,这里不多介绍,优化方面:

  1. 使用随机数代替中间量x的选择,可以有效避免退化成链。
  2. 在排序到待排序列元素个数少于7时,使用选择排序或冒泡排序代替快速排序过程。

分类: Algorithm

发表评论

电子邮件地址不会被公开。 必填项已用*标注

This site uses Akismet to reduce spam. Learn how your comment data is processed.