快速排序

顾名思义,最快的排序,相当于sort

直接上代码:

 

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<cstdlib>
#include<algorithm>
using namespace std;
void qsort(int,int);
int a[1000001];
int ans;
int main()
{
int n,i;
cin >> n;
for(i = 1;i <= n;i ++)
cin >> a[i];
qsort(1,n);
for(i = 1;i <= n;i ++)
cout << a[i] << " ";
cout << endl;
return 0;
}
void qsort(int l,int r)//左边和右边
{
int i,j,mid,p;
i = l;j = r;
mid = a[(l + r) / 2];//定义中间参考的数
while(i <= j)
{
while(a[i] < mid) i ++;//如果前面的都比中间的小就不用交换
while(a[j] > mid) j --;//反之,后面的比中间的大也不用交换(从小到大排序)
if(i <= j)//如果找到两个要交换的数并且符合条件大在前小在后,那么交换,并且找下一个
{
swap(a[i],a[j]);
i ++;j --;
}
}
if(l < j) qsort(1,j);//如果找完之后还可以接着找,那么继续
if(i < r) qsort(i,r);
}

模板

posted @ 2020-03-29 22:44  徐明拯  阅读(107)  评论(0编辑  收藏  举报