#include<stdio.h>
#include<stdlib.h>
void display(int array[],int high){
int i;
for(i=0;i<=high;i++){
printf("%d\t",array[i]);
}
printf("\n");
}
int fast_sort(int array[],int i,int j){
//取首位为基准数据
int key = array[i];
while(i<j){
//基准数据为最左数据,故从右边开始比较
//队尾元素大于基准数据则继续循环
while(i<j&&array[j]>=key){
j--;
}
//循环结束,若i<j,则说明array[j]比基准数据小,将array[j]赋给array[i]
if(i<j){
array[i]=array[j];
}
//队首元素大于基准数据则继续循环
while(i<j&&array[i]<=key){
i++;
}
//循环结束,若i<j,则说明array[i]比基准数据大,将array[ji]赋给array[j]
if(i<j){
array[j]=array[i];
}
}
//跳出循环后,i=j,把key赋值到此位置
array[i]=key;
return i;
}
void quick_sort(int array[],int low,int high){
if(low<high){
int stand = fast_sort(array,low,high);
//递归调本函数
//左
quick_sort(array,low,stand-1);
//右
quick_sort(array,stand+1,high);
}
}
int main(){
int array[] = {4,6,7,5,8,3,1,2};
//求数组长度
int size = sizeof(array)/sizeof(array[0]);
quick_sort(array,0,size-1);
display(array,size-1);
}
快速排序算法--C语言
最新推荐文章于 2021-09-19 15:24:31 发布