posts - 18,  comments - 1,  trackbacks - 0

#include<iostream>//一个快速排序的例子

using  namespace std;

void swap(int &a,int &b){
     a=a^b;
     b=a^b;
     a=a^b;
     }

void quick(int *a,int n){
     if(n<=1)
     return;
     swap(*a,a[n>1]);//把中间的数作为分组的标准,并把它换到数组首
     int *p=new int[n];
     int*lp=p;
     int*rp=p+n-1;
     int*pt=a+1;
     int pivot=*a;
     for(int i=1;i<n;i++)//把数据 考到临时数组
             {
              if(*pt>pivot)
                    *rp--=*pt++;
               else
                    *lp++=*pt++;                  
             }
   *lp=pivot;
    pt=a;
    lp=p;
    for(int i=0;i<n;i++)//把数据考回来
           *pt++=*lp++;
  delete[] p;
  int left=rp-p;//计算左边部分的元素个数
  quick(a,left);
 quick(a+left+1,n-left-1); 
}

 

int main(){
  
    int a[11]={5,456,3219,416,4,64,31,987,1987,98731,9841};
 quick(a,11);
 
 for(int i=0;i<11;i++)
         cout<<a[i]<<' ';
         cout<<endl;
         char t;
         cin>>t;
         return 0;
      
      
    }

posted on 2007-01-24 22:16 sunny 阅读(875) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航:
 
<2007年1月>
31123456
78910111213
14151617181920
21222324252627
28293031123
45678910

常用链接

留言簿(1)

随笔分类

随笔档案

相册

收藏夹

朋友

搜索

  •  

最新评论

评论排行榜