题解 | #牛牛的排序#
牛牛的排序
https://www.nowcoder.com/practice/26a0c92e9266443887a3bf81aff8e188
//快排实现
#include <stdio.h>
#include <stdlib.h>
void sort(int *p,int left,int right){
if(left>=right){
return;
}
int i=left,j=right;
int temp=p[left];
while (i!=j) {
while (i<j&&p[j]>=temp) {
j--;
}
while (i<j&&p[i]<=temp) {
i++;
}
if(i<j){
int t = p[i];
p[i]=p[j];
p[j]=t;
}
}
p[left]=p[i];
p[i]=temp;
sort(p, left, i-1);
sort(p, i+1, right);
}
int main() {
int n;
scanf("%d",&n);
int *arr = (int*)malloc(n*sizeof(int));
for(int i=0;i<n;i++){
scanf("%d ",arr+i);
}
sort(arr,0,n-1);
for(int i=0;i<n;i++){
printf("%d ",*(arr+i));
}
if(arr!=NULL){
free(arr);
arr=NULL;
}
return 0;
}