分治算法——快速排序

7.1快速排序
#include
using namespace std;
void qsort(int,int);
int a[100];

void qsort(int l,int r) //自定义快速排序程序
{
int i,j,mid,p;
i=l;j=r;
mid=(l+r)/2; //当前序列的中间位置的数为中间数
do
{
while(a[i] while(a[j]>a[mid]) j–; //在右半部分寻找比中间数小的数
if (i<=j)
{
int p=a[i]; a[i]=a[j]; a[j]=p;
i++;j–;
}
}while(i<=j); //搜索结束后的结果:以中间数为界,左边数小,右边数大。
if (l if (i }

int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++) //输入一组待排序的数
cin>>a[i];
qsort(1,n); //快速排序
for(int i=1;i<=n;i++) //输出排序结果
cout< return 0;
}

你可能感兴趣的:(基础算法)