快速排序主要是分治的思想,找到枢轴元素,并递归的找两边的枢轴元素,直至有序
#include<stdio.h>
void QuickSort(int A[],int low,int high){
int l=low,h=high;
if(low<high){
int pivot=A[low];//将第一个元素作为枢轴元素
while(low<high){
while(low<high&&A[high]>=pivot){
--high;
}
//high指针从右往左找,直到找到比枢轴元素小的元素,
//将high所指的元素移到low所指的位置
A[low]=A[high];
while(low<high&&A[low]<pivot){
++low;
}
//low指针从左往右找比枢轴元素大的元素
//将大的元素赋给high所指的位置
A[high]=A[low];
}
//最终high与low所指的位置就是存放枢轴元素的位置
A[low]=pivot;
QuickSort(A,l,low-1);//左半部分进行递归排序
QuickSort(A,low+1,h);//右半部分进行递归排序
}
}
int main(){
int a[14]={12,21,33,1,4,69,77,55,45,66,22,100,88,12};
QuickSort(a,0,13);
for(int i=0;i<14;i++)
printf("%d\n",a[i]);
return 0;
}