最近复习了排序算法。仅在此略加笔记,以备后需。来日有时,再详细说明。
#include <stdio.h>
int partition(int L[],int low ,int high);
int quickSort(int L[],int low ,int high);
int main(void)
{
int L[18]={0,5,3,6,0,8,1,4,2,45,23,11,0,2,3,6,3,8};
quickSort(L,1,17);
int i=1;
for(;i<18;i++)
printf("%d\n",L[i]);
}
int partition(int L[],int low ,int high)
{
L[0]=L[low];
int pivotkey=L[low];
while(low<high)
{
while(low<high&&L[high]>=pivotkey) high--;
L[low]=L[high];
while(low<high&&L[low]<=pivotkey) low++;
L[high]=L[low];
}
L[low]=L[0];
return low;
}
int quickSort(int L[],int low ,int high)
{
if(low<high){//递归出口条件。
int pivotkey=partition(L,low,high);
quickSort(L,low,pivotkey-1);
quickSort(L,pivotkey+1,high);
}
}