我目前需要实现快速排序以便对随机生成的双精度矢量进行排序以进行分析,我在一年或两年前在线发现了以下代码,并成功地将其与另一个项目一起使用,但它目前导致了分段错误到期我只能假设是无限递归。任何想法为什么这可能不起作用?
void quickSort(vector<double>& array, int left, int right)
{
//Declarations
int low = left;
int high = right;
int pivot = array[(left + right)/2];
//Partition
while(low < high)
{
while (array.at(low) < pivot && low < right)
low++;
while (array.at(high) > pivot && high > left)
high--;
if(low <= high)
{
swap(array.at(low), array.at(high));
low++;
high--;
}
}
// Recursion
if(left < high)
quickSort(array, left, high);
if(low < right)
quickSort(array, low , right);
}
*代码已被编辑以实现一些建议,它不会超出范围,只有主要是排序