#include <stdio.h>
int a[8]={7,1,3,8,12,11,2,9};
void swap(int* a, int* b){
int t;
t = *a;
*a = *b;
*b = t;
}
void quickSort(int a[], int s, int e){
if(s >e){
return;
}
int i = s, j = e, k = a[s];
while(i != j){
//首先,从后往前找, 只要后面的元素比k大,位置就不变,之后继续寻找
while(i < j && k < a[j]){
--j;
}
//当后面的元素比K小的时候,就需要交换数据
swap(&a[i], &a[j]);
//交换完成之后,从前往后找
while(i < j && k > a[i]){
++i;
}
//当前面的元素比K大的时候,就需要交换数据
swap(&a[i], &a[j]);
}
// 经过上面的一次循环, 一次快速排序就完成了 ,此时 i = j
//之后就该递归啦
quickSort(a, s, i-1);
quickSort(a, i+1,e);
}
int main(int argc, char *argv[]){
int t ; //用来遍历排序好的数组
quickSort(a,0,7);
//遍历
for(t = 0; t < 8; t ++){
printf("%d ",a[t]);
}
printf("\n Hello, world\n");
return 0;
}
快速排序法
最新推荐文章于 2023-07-12 10:59:32 发布