11//定义数列,左位,右位
13空表返回空值
15定义左下标右下标
16定义中心轴
17中心轴初始位置是在数列最左边
19最右边值大于中心轴的值时
21最右边的下标往左移一位
25最右边的值放到最左边的下标指的那个位置上去
反之亦是
所以比中心轴的值大的值不是随便扔到左边的,是扔到左边靠近右边的下标的位置
35左右下标重合
37中心轴的值放到左下标去(右也行)
40中心轴的左边再重复前面的步骤迭代排序,右边也是,但是为了左右起点不重复所以一个+1一个-1
嘻嘻特别严谨的缩进格式哇
#include<iostream>
using namespace std;
void Quicksort(int a[],int L,int R)
{
if(L>=R)
return ;
int left=L,right =R;
int privot = a[left];
while(left<right)
{
while (left<right&&a[right]>=privot)
{
right--;
}
if (left<right)
{
a[left]=a[right];
}
while(left<right&&a[left]<=privot)
{
left++;
}
if(left<right)
{
a[right]=a[left];
}
if(left>=right)
{
a[left]=privot;
}
}
Quicksort(a,L,right-1);
Quicksort(a,right+1,R);
}
int main()
{
int n;
cin>>n;
int a[100001];
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]<<" ";
return 0;
}