我正在尝试使用快速排序对文件中存在的 100k 元素进行排序。我的算法仅在我使用第一个元素作为枢轴时才有效。如何使枢轴元素对程序通用?使用快速排序选择枢轴元素的最佳方法是什么?枢轴元素是依赖于数据还是我们实时使用任何特定算法?
void quicksort(int *temp,int p,int r)
{
if(r > p + 1)
{
int piv = temp[p];
int left = p + 1;
int right = r;
while(left < right)
{
if(temp[left] <= piv)
left++;
else
swap(&temp[left], &temp[--right]);
}
swap(&temp[--left], &temp[p]);
quicksort(temp, p, left);
quicksort(temp, right, r);
}
}