#include <stdio.h>
#include <stdlib.h>
//快速排序
void input(int *p,int n){
for(int i=0;i<n;i++){
printf("请输入第%d个元素:",i+1);
scanf("%d",&n);
p[i]=n;
}
}
void print(int *p,int n){
for(int i=0;i<n;i++){
printf("%d ",p[i]);
}
printf("\n");
}
void swap(int *x,int *y){
*x^=*y;
*y^=*x;
*x^=*y;
}
int one_sort(int *p,int low,int high){
int flag=p[low];
while(low<high){
while(flag<p[high]){
high--;
}
if(low<high){
swap(p+low,p+high);
low++;
}
while(p[low]<flag){
low++;
}
if(low<high){
swap(p+low,p+high);
high--;
}
}
return low;
}
void quick_sort(int *p,int low,int high){
if(low<high){
int ret=one_sort(p,low,high);
quick_sort(p,low,ret-1);
quick_sort(p,ret+1,high);
}
}
int main(int argc, const char *argv[]){
int n;
printf("请输入元素的个数:");
scanf("%d",&n);
int *p=(int *)malloc(4*n);
input(p,n);
printf("------------------\n");
printf("排序前:");
print(p,n);
quick_sort(p,0,n-1);
printf("排序后:");
print(p,n);
return 0;
}
快速排序算法
最新推荐文章于 2024-07-15 22:10:26 发布