私はquicksortを実装していました、私はピボットを中央値または3つの数字に設定したいと思いました。 3つの数字は最初の要素、中間の要素、最後の要素です。最小数比較の3つの数字の中央値を見つける
おそらく中央値がそれほど大きくないことがありますか。比較の?
median(int a[], int p, int r)
{
int m = (p+r)/2;
if(a[p] < a[m])
{
if(a[p] >= a[r])
return a[p];
else if(a[m] < a[r])
return a[m];
}
else
{
if(a[p] < a[r])
return a[p];
else if(a[m] >= a[r])
return a[m];
}
return a[r];
}
あなたは比較の数だけを気にしていますか?他の算術演算数は制限されていませんか? – Elist
中央値を計算する効率的なコードがほしいだけです。 –
あなたはそれを持っています。最高の場合は2回、最悪の場合は3回です。 – Elist