クイックソートを使用して、ファイル内に存在する 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);
}
}