#include "stdio.h"
//交换两个数
void swap(int &a,int &b){
int t=a;
a=b;
b=t;
}
//根据第一个数,把小于第一个数的数放在前面,把打印第一个数的数放在后面
int partition(int *a,int l,int r){
int p=a[l];
int i=l+1;
int j=i;
while (j<=r){
if(p>a[j]){
swap(a[i],a[j]);
i++;
}
j++;
}
swap(a[l],a[i-1]);
return i-1;
}
//快速排序
void quicklysort(int *a,int l,int r){
if(l<r){
int p=partition(a,l,r);
// 排序左边
quicklysort(a,l,p-1);
// 排序右边
quicklysort(a,p+1,r);
}
}
void sort(int *a,int n){
int l=0,r=n-1;
quicklysort(a,l,r);
}
int main(){
int n;
scanf("%d",&n);
int a[10000];
for (int i = 0; i < n; ++i) {
scanf("%d",&a[i]);
}
sort(a,n);
for (int i = 0; i < n; ++i) {
printf("%d\t",a[i]);
}
return 0;
}
C++ 对数组的快速排序算法
最新推荐文章于 2023-08-14 09:22:09 发布