Tôi đã triển khai quicksort và tôi muốn đặt trục xoay là số trung vị hoặc ba số. Ba số là phần tử đầu tiên, phần tử ở giữa và phần tử cuối cùng.Số lượng tối thiểu so sánh để tìm trung bình của 3 số
Tôi có thể tìm thấy trung vị ở mức thấp hơn không. so sánh?
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];
}
Bạn chỉ quan tâm đến số lượng so sánh? Số hoạt động số học khác có bị chặn không? – Elist
Tôi chỉ muốn có một mã hiệu quả để tính trung bình. –
Sau đó, bạn có nó. Trường hợp tốt nhất là 2 so sánh, trường hợp xấu nhất là 3. – Elist