快速排序

来源:互联网 发布:淘宝快递软件 编辑:程序博客网 时间:2024/05/18 03:19
//快排//这个函数主要求第一趟后第一个数字的最后位置 int Partition(Sqlist *L,int low,int high){L.r[0]=L.r[low];//把 第一个作为待比较的数 左边全部比他小 右边全部比他大 int pivotkey=L.r[low].key;while(low<high){while(low<high&&r[high].key>=pivotkey) --high; //已经比他大的往前移动 L.row[low]=L.row[high];//一旦发现比他小的则跟待比较的数进行替换 while(low<high&&r[high].key<=pivotkey) ++low; L.row[high]=L.row[low];}L->r[low]=L->r[0];return low;} //使用递归将剩下的元素按照相同的方法进行排序 void QSort(Sqlist *L,int low,int high){int pivot;if(low<high){pivot=Parition(L,low,high);Qsort(L,pivot+1,high);Qsort(L,1,pivot);}}void QuickSort(Sqlist *L){QSort(L,1,L->length)}
非常好的算法,其性能不亚于起泡排序