c++实现的快速排序算法

来源:互联网 发布:spss22 mac版教程 编辑:程序博客网 时间:2024/06/13 00:20
                            **对数组[0,n)排序**
#include <iostream>using namespace std;void qsort1(int *a,int l,int r){    if(l>=r) return;    int i=l,j=r,t=a[l],temp;    while(i<j)    {        while(i<j&&a[j]>=t)            j--;        while(i<j&&a[i]<=t)            i++;        if(i<j)        {            temp=a[i];            a[i]=a[j];            a[j]=temp;        }    }    a[l]=a[i];    a[i]=t;    qsort1(a,l,i-1);    qsort1(a,i+1,r);}void qsort2(int *a,int l,int r){    if(l>=r) return;    int i=l,j=r,t=a[l];    while(i<j)    {        while(i<j&&a[j]>=t)            j--;        a[i]=a[j];        while(i<j&&a[i]<=t)            i++;        a[j]=a[i];    }    a[i]=t;    qsort2(a,l,i-1);    qsort2(a,i+1,r);}void print(int *a,int n){    cout<<"排序后的数组为:"<<endl;    for(int i=0; i<n; i++)        cout<<a[i]<<ends;    cout<<endl<<endl<<endl;}int main(){    int n,i;    cout<<"输入数组元素个数(以0为结束):   ";    while(cin>>n&&n)    {        int *a=new int[n];        cout<<"依次输入数组元素:      ";        for(i=0;i<n;i++)            cin>>a[i];        cout<<"使用快排算法1/0?      ";        cin>>i;        if(i) qsort1(a,0,n-1);        else qsort2(a,0,n-1);        print(a,n);        delete []a;        cout<<"输入数组元素个数(以0为结束):   ";    }    return 0;}
0 0
原创粉丝点击