您的位置:首页 > 其它

快速排序

2012-02-18 18:50 190 查看
快速排序是一种就地排序方法。。每次找一个基准点,左边小于该基准点,右面大于该基准点。。。

#include<iostream>
#include<string.h>
using namespace std;
int partion(int *v,int p,int r)
{ int x=v[r];
int i=p-1;
for(int j=p;j<r;++j)
if(v[j]<=x)
{ i++;
int temp=v[j];
v[j]=v[i];
v[i]=temp;
}
int a=v[r];
v[r]=v[i+1];
v[i+1]=a;
return i+1;
}
void quicksort(int *v,int p,int r)
{ if(p<r)
{ int q=partion(v,p,r);
quicksort(v,p,q-1);
quicksort(v,q+1,r);
}
}
int main()
{ while(1)
{ int n;
cin>>n;
int a[20];
for(int i=0;i<n;++i )
cin>>a[i];
quicksort(a,0,n-1);
for(int i=0;i<n;++i)
cout<<a[i]<<" ";
cout<<endl;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: