快速排序是20世纪的十大算法之一,在常见的o(nlogn)的时间复杂度的算法(快速排序,堆排序,2路归并排序)中,快速排序的平均性能也是最优的,下面是快排的c语言实现代码
// 基本思想是分治法,故一般用到递归void QuickSort(int L[],int low, int high) //low和high指示排序的范围{int temp=0; //用于存储待交换的元素的值int i=low,j=high;if(low<high){temp=L[low]//序列中第一个关键字作为枢轴元素while(i<j){while(i<j&&temp<=L[j]) //从右往左扫描--j;if(i<j){L[i]=L[j]++i;}while(i<j&&temp>=L[i]) //从左往右扫描++i;if(i<j){L[j]=L[i]--j;}}}//一次排序完成 L[i]=temp;//此时temp已经被放在最终位置上,左边的元素均比其小,右边的元素均比其大QuickSort(int L[],int low, i-1);QuickSort(int L[],int i+1, high); //递归,对分成的两个子序列进行快速排序}