题解 | #排序#
排序
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; }