快速排序,是冒泡排序的改进,通过寻找“中间元素”,在一趟排序中,把比“中间元素”小的数放到左边,比“中间元素”大的数放到右边,如此递归,最终得到排序结果。
#include <stdio.h>
#define NUM 5
void quick_sort(int a[],int left,int right);
void swap(int v[],int i, int j);
void main(){
int a[NUM] = {5,4,3,2,1};
quick_sort(a,0,NUM-1);
for(int i = 0;i < NUM;i++){
printf("%d",a[i]);
}
}
void quick_sort(int a[],int left,int right){
int i,mid;
void swap(int v[],int i, int j);
if(left >= right){
return;
}
swap(a,left,(left + right)/2);
mid = left;
for(i = left+1;i <= right;i++){
if(a[i] < a[left]){
swap(a,++mid,i);
}
}
swap(a,left,mid);
quick_sort(a,left,mid-1);
quick_sort(a,mid+1,right);
}
void swap(int v[],int i, int j){
int temp;
temp = v[j];
v[j] = v[i];
v[i] = temp;
}