typedef struct
{
int *arr; //arr[0] 用作哨兵或者临时变量
int len;
}SqList_t;
int partition(SqList_t *L,int low,int high)
{
int pivotkey;
pivotkey = L->arr[low];
L->arr[0] = pivotkey;
while(low < high)
{
while(low < high && L->arr[high] >= pivotkey)
high--;
L->arr[low] = L->arr[high];
// printArr(L);
while(low < high && L->arr[low] <= pivotkey)
low++;
L->arr[high] = L->arr[low];
// printArr(L);
}
L->arr[low] = L->arr[0];
return low;
}
void qSort(SqList_t *L,int low,int high)
{
int pivot;
if(low < high)
{
pivot = partition(L,low,high);
qSort(L,low,pivot-1);
qSort(L,pivot+1,high);
}
}
bool quickSort(SqList_t *L)
{
qSort(L,1,L->len-1);
}
1.快速排序
最新推荐文章于 2024-09-23 20:41:21 发布