您的位置:首页 > 编程语言 > C语言/C++

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

2015-12-09 17:11 495 查看
**对数组[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
;
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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: