#include<iostream>
using namespace std;
int n;//考虑作用域
const int N=1e6+10;//N的数为无穷大
int q[N];//输入的数组
void quick_sort(int q[],int l,int r)//快速排序函数
{
if(l>=r)
return ;//判断边界问题
int x=q[l],i=l-1,j=r+1;//双指针i,j以及一个标准点(所有数均与x进行比较)
while(i<j)
{
do i++;
while(q[i]<x);//左指针从左向右进行比较,直到找到一个大于等于x的数
do j--;
while(q[j]>x);//右指针从右像左进行比较,直到找到一个小于等于x的数
if(i<j)
swap(q[i],q[j]);}//将大于x的数放置在x的右边,将小于x的数放置在x的左边
quick_sort(q,l,j);//左边递归
quick_sort(q,j+1,r);//右边递归
}
int main()
{
cin>>n;
for(int i=0;i<n;i++)
cin>>q[i];//输入数组
quick_sort(q,0,n-1);//函数的调用
for(int i=0;i<n;i++)
cout<<q[i]<<" ";//输出
return 0;
}
快速排序(Acwing)
于 2022-01-21 12:28:03 首次发布