快速排序算法

来源:互联网 发布:软件数据线6.7 编辑:程序博客网 时间:2024/06/10 14:15

温习下快速排序算法的实现

#include<iostream>using std::cout;using std::endl;//the length of arrayint len = 8;class QSort{public:        int partition(int[],int,int);           //break array into two part        void swap(int&, int&);                          //swap two data by reference        void print(int[]);        void qsort(int[],int,int);                      //recursive call};void QSort::swap(int& a, int& b ){        int temp=a;        a=b;        b=temp;}int QSort::partition(int a[],int l, int r){        int left=l,right=r;        int i=left-1,j=left;        swap(a[left],a[right]);         //divide bass on the first data        while(j<r){                if(a[j]<a[right]){                        i++;                        swap(a[i],a[j]);                }                j++;        }        swap(a[++i],a[right]);        return i;}void QSort::qsort(int a[], int l, int r){        //do some checks        if(a== NULL || l<0 || r>=len){                cout<<"invalid parameters"<<endl;                return ;        }        if(l == r)                return;        int index=partition(a,l,r);        if(index>l)                qsort(a,l,index-1);        if(index<r)                qsort(a,index+1,r);}void QSort::print(int a[]){        for(int i=0;i<len;i++)                cout<<a[i]<<" ";        cout<<endl;}int main(){        int a[]={5,7,3,8,1,9,4,2};        QSort qs;        qs.print(a);        qs.qsort(a,0,len-1);        qs.print(a);        int b[]={3,6,1,9,7,3,9,1};        qs.print(b);        qs.qsort(b,-2,len-1);        qs.print(b);        return 0;}

原创粉丝点击