参考博客:白话经典算法系列之六 快速排序 快速搞定
/*************************************
* 功能:实现快速排序算法
* 作者:khq
* 时间:2020年4月18日
*************************************/
#include<stdio.h>
//方法声明
int adjustSort(int A[],int m,int n);
void quickSort(int A[],int m,int n);
int main(void){
int a[15] = {-5,28,8,-3,19,15,72,36,10,3,11,1,-2,77,66};
printf("排序前的数组顺序......\n");
for(int i=0;i<15;i++){
printf("%d ",a[i]);
}
printf("\n");
quickSort(a,0,14); //传递a的地址,数组的第一个角标和最后一个角标
printf("快速排序后的数组顺序......\n");
for(int j=0;j<15;j++){
printf("%d ",a[j]);
}
printf("\n");
return 0;
}
int adjustSort(int A[],int m,int n){
int i=m,j=n;
int x = A[i];
while(i<j){
while(i<j && A[j]>=x) //i<j不可或缺,不然出现i>j情况
j--;
A[i] = A[j];
while(i<j && A[i]<x)
i++;
A[j] = A[i];
}
A[i] = x;
return i;
}
void quickSort(int A[],int m,int n){
if(m<n){ //不是while,不然死循环
int pos = adjustSort(A,m,n);
quickSort(A,m,pos-1);
quickSort(A,pos+1,n);
}
}