//快速排序
#include "stdio.h"
#define SIZE 6
void quick_sort(int *num, int low, int high ){
int i,j,temp;
int tmp;
i = low;
j = high;
tmp = num[low];//暂存遍历到的第一个数
if(i > j){//如果右指针下标小于左指针,则退出
return;
}
while(i != j){
while(num[j] >= tmp && j > i){//从右侧开始往左移动,如果比tmp存的值大,就继续向左移动
j--;
}
while(num[i] <= tmp && j > i){//从左侧开始往右移动,如果比tmp存的值小,就继续向右移动
i++;
}
if(j > i){//如果右指针下标大于左指针,将数组中左右指针下标对应的数进行交换。这个条件加与不加没有区别,因为j=i的情况下是自己跟自己对调,无影响。
temp = num[j];
num[j] = num[i];
num[i] = temp;
}
}
num[low] = num[i];
num[i] = tmp;
quick_sort(num,low,i-1);
quick_sort(num,i+1,high);
}
int main(){
int num[SIZE]={3,5,2,9,1,4};
for(int i=0;i<SIZE;i++){
printf("%d",num[i]);
}
printf("\n");
quick_sort(num,0,SIZE-1);
for(int i=0;i<SIZE;i++){
printf("%d",num[i]);
}
return 0;
}
C语言快速排序
最新推荐文章于 2024-07-24 20:25:39 发布