正文

快速排序的C++实现2009-09-05 01:07:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/shao/47403.html

分享到:

  //quick_sort by suqiang @ neuq & jlu 更详细的内容请访问:http://blog.csdn.net/china8848 #define MAX_SIZE 100#include <iostream>using namespace std; //交换指针p1,p2指向的值void exchange(int *p1,int *p2){    int temp=*p1;    *p1=*p2;    *p2=temp;}//pa为指向A[]的数组,p,r为下标,对A[p..r]进行就地重排,以A[r]为主元//划分为小于主元和大于主元的两部分,返回主元的下标q//例如:A[1..6]={18,8,16,6,9,10}结果:A[1..6]={8,6,9,10,18,16} q=4//(元素顺序可能与结果不一致,但小于10的元素在10前面,大于10的元素在10后面)sint partition(int *pa,int p,int r){    int x=*(pa+r); //主元    int i=p-1,j;  //i表示小于主元的最后一个元素q    for(j=p;j<r;j++)    {        if(*(pa+j)<x)        {            i++;            exchange((pa+i),(pa+j));        }    }    exchange((pa+r),(pa+i+1));    return i+1;}//快速排序void quick_sort(int *pa,int p,int r){    if(p<r)    {        int q=partition(pa,p,r);        quick_sort(pa,p,q-1);        quick_sort(pa,q+1,r);    }} int main(){    int A[MAX_SIZE],i;    for(i=1;i<=10;i++)        A[i]=11-i;    int *pa=A;    //快速排序    quick_sort(pa,1,10);    for(i=1;i<=10;i++)        cout<<A[i]<<endl;    return 1;}

阅读(1417) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册