*快速排序
头文件algorithm下的sort是强有力的排序函数
但是 今天要说说qsort函数,虽然它可以直接引用,但是我们还是要掌握其原理。
话不多说,让我们来看下下面的代码
这个就是快速排序的简单模板,并附上完整排序程序:
void quick_sort(int l,int r)
{
int i=l,j=r;
int mid=a[(l+r)/2];
do
{
while(a[i]<mid)
i++;
while(a[j]>mid)
j--;
if(i<=j)
{
swap(a[i],a[j]);
i++;
j--;
}
}
while(i<=j);
if(l<j)
quick_sort(l,j);
if(i<r)
quick_sort(i,r);
}
这个就是快速排序的简单模板,并附上完整排序程序:
#include <bits/stdc++.h>
using namespace std;
int a[100005];
void quick_sort(int l,int r)
{
int i=l,j=r;
int mid=a[(l+r)/2];
do
{
while(a[i]<mid)
i++;
while(a[j]>mid)
j--;
if(i<=j)
{
swap(a[i],a[j]);
i++;
j--;
}
}
while(i<=j);
if(l<j)
quick_sort(l,j);
if(i<r)
quick_sort(i,r);
}
int main()
{
int n;
cin>>n;
for(int i=0; i<n; i++)
cin>>a[i];
quick_sort(0,n-1);
for(int i=0; i<n; i++)
{
cout<<a[i];
if(i<=n-1)
cout<<' ';
}
return 0;
}