一、代码
-
我觉得快速排序就是一个找坑,填坑的过程
- 这里有一个博客地址,里边有很详细的关于快速排序的解释,结合代码很容易弄明白
- https://blog.csdn.net/morewindows/article/details/6684558
#include<stdio.h> #define N 10 int Division(int a[],int left,int right) //分割; { int base=a[left]; //基准元素; while(left<right) { //先从后向前找,再从前向后找 while(left<right&&a[right]>=base) right--; //从右向左找第一个比基准值小的元素; a[left]=a[right]; while(left<right&&a[left]<base) left++; //从左向右找第一个比基准值大的元素; a[right]=a[left]; } a[left]=base; return left; } void Quick(int a[],int left,int right) { if(left<right) { int i=Division(a,left,right); //分割; Quick(a,left,i-1); //将两部分分别排序; Quick(a,i+1,right); } } int main(void) { int a[N]; printf("输入数组元素:\n"); for(int i=0;i<N;i++) scanf("%d",&a[i]); printf("\n"); Quick(a,0,N-1); printf("排序后的数组为:\n"); for(i=0;i<N;i++) printf("%d ",a[i]); printf("\n"); return 0; }