题解 | #排序#
排序
https://www.nowcoder.com/practice/508f66c6c93d4191ab25151066cb50ef
#include <iostream>
using namespace std;
int Partition(int A[], int low, int high){
int pivot = A[low];
while(low < high){
while(low < high && A[high] >= pivot) //确定位置
--high; //从后向前找比枢纽小的元素
A[low] = A[high]; //将比枢纽小的元素向前填充
while(low < high && A[low] <= pivot) //确定位置
++low; //从前向后找比枢纽大的元素
A[high] = A[low]; //将比枢纽大的元素向后填充
}
A[low] = pivot; //将枢纽元素存储到最终的划分位置
return low; //返回枢纽元素最终位置
}
void QuickSort(int A[], int low, int high){
if(low < high){
int pivotpos = Partition(A, low, high); //确定划分的位置
QuickSort(A, low, pivotpos-1); //递归进行左划分
QuickSort(A, pivotpos+1, high); //递归进行右划分
}
}
int main() {
int a[100];
int n;
cin>>n;
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;
}