#include<iostream.h>

void qsort(int [],int,int);

void main()                    //quick sort 快速排序法
{
 int array[]={3,32,332,4,2,34,23,4,2,423};
 int len=sizeof(array)/sizeof(int);
 for(int i=0;i<len;i++)       //原始结果输出
  cout<<array[i]<<",";
 cout<<endl;

 qsort(array,0,len-1);

 for(int j=0;j<len;j++)         //排序结果输出
  cout<<array[j]<<",";
 cout<<endl;
}

void qsort(int a[],int left,int right)
{
 int pivot,l,r,temp;
 l=left;
 r=right;
 pivot=a[(left+right)/2];

 while(l<r)
 {
  while(a[l]<pivot) ++l;
  while(a[r]>pivot) --r;

  if(l>=r) break;

  temp=a[l];
  a[l]=a[r];
  a[r]=temp;

  if(l!=pivot) --r;
  if(r!=pivot) ++l;
 }
 if(l==r) l++;
 if(left<r) qsort(a,left,l-1);
 if(l<right) qsort(a,r+1,right);
}

posted on 2008-10-31 13:52  无痕的泪  阅读(629)  评论(2编辑  收藏  举报