我已經廣泛地測試了以下代碼的交換和分區函數,它們似乎是正確的;然而,當我嘗試執行快速排序時,它會陷入無限循環。我假設問題發生在我在分區中返回的值,但我不完全確定它是什麼。C++中的Quicksort無限循環問題
void swap_G(int *begin, int *end)
{
int temp = *begin;
*begin = *end;
*end = temp;
return;
}
int* partition(int* begin, int* end)
{
if (begin >= end) {
return begin;
}
int pivot = *end;
int* temp_Begin = begin, *temp_End = end;
temp_End--;
while (temp_Begin < temp_End)
{
while (*temp_Begin < pivot && temp_Begin < temp_End)
{
temp_Begin++;
}
while (*temp_End > pivot && temp_End > temp_Begin)
{
temp_End--;
}
swap_G(temp_Begin, temp_End);
}
swap_G(end, temp_Begin);
return temp_Begin;
}
void quicksort_G(int* begin, int* end)
{
if (begin >= end)
{
return;
}
int* mid = partition(begin, end);
quicksort_G(begin, --mid);
quicksort_G(mid + 1, end);
}
讓'begin + 1 == end','partition()'返回什麼值?然後什麼值將遞歸調用到'quicksort_G'? – CiaPan