Я пытался написать реализацию QuickSort, но в ней есть какая-то ошибка, которую я не могу определить. Приведенный ниже код хорошо работает с вектором небольшого размера, например 100, но когда я пытаюсь предоставить 10000 номеров из файла, программа не останавливается. Любая помощь будет великолепна.
int Partition(vector<int> &nums, int low, int high, unsigned long &numIterations) {
int paritionIndex = low;
int paritionElement = nums.at(paritionIndex);
int potentialPivotIndex = low + 1;
for (int i = low + 1; i < high; ++i) {
if (paritionElement > nums.at(i)) {
std::swap(nums.at(potentialPivotIndex), nums.at(i));
++potentialPivotIndex;
}
}
std::swap(nums.at(potentialPivotIndex - 1), nums.at(paritionIndex));
//++numIterations;
return potentialPivotIndex - 1;
}
void QuickSort(vector<int> &nums, int low, int high, unsigned long &numIterations) {
int p;
if ((high - low) > 0) {
p = Partition(nums, low, high, numIterations);
QuickSort(nums, 1, p - 1, numIterations);
QuickSort(nums, p + 1, high, numIterations);
}
}