Wdrażałem quicksort i chciałem ustawić przestawność na medianę lub trzy liczby. Te trzy liczby to pierwszy element, środkowy element i ostatni element.Minimalne nie. porównań, aby znaleźć medianę 3 liczb
Czy mogę znaleźć medianę w mniejszej ilości? porównań?
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];
}
Czy interesuje Cię tylko liczba porównań? Czy inny numer operacji arytmetycznej nie jest ograniczony? – Elist
Po prostu chcę wydajnego kodu do obliczenia mediany. –
To masz. Najlepszym przypadkiem są 2 porównania, najgorszy przypadek to 3. – Elist