在快速排序算法中遇到的问题:QuickSort的递归函数和主调用函数名称相同,我自己调试是报错的
书上的代码是这样的:
// Partition是判断分割元素下标的函数
int Partition(List* list, int low, int high)
{
int i =low,j = high + 1;
Entry pivot = list ->D[low]; //pivot是分割元素
do
{
do i++; while(i<=high && list->D[i].key < pivot.key); //i前进
do j--; while(list->D[j].key>pivot.key); //j前进
if(i < j ) Swap(list->D,i ,j );
}while(i < j);
Swap(list->D,low, j);
return j; //此时j是分割元素下标
}
//快速排序算法
void QuickSort(List *list, int low, int high) //快速排序的递归函数
{
int k;
if(low < high) //当前待排序序列至少包含两个元素
{
k = Partition(list, low ,high);
QuickSort(list, low, k-1);
QuickSort(list, k+1, high);
}
}
void QuickSort(List *list) //快速排序算法的主调用函数
{
QuickSort(list, 0 ,list->n-1);
}