Nó phụ thuộc vào dữ liệu của bạn. Trường hợp xấu nhất là số lượng phân phối đồng đều.
Trong trường hợp này, bạn có thể tìm thấy trung vị trong thời gian O (N) như trong ví dụ này:
Giả sử số của bạn là 2,7,5,10,1,6,4,4,6,10,4,7,1,8,4,9,9,3,4,3,3 (phạm vi là 1-10) .
Chúng tôi tạo ra 3 thùng: 1-3, 4-7, 8-10. Lưu ý rằng trên và dưới có kích thước bằng nhau.
Chúng tôi điền vào các thùng với các số, đếm số lần rơi trong mỗi số, tối đa và tối thiểu
- thấp (5): 2,1,1,3,3, tối thiểu 1, tối đa 3
- giữa (10): 7,5,6,4,4,6,4,4,4,4, tối thiểu 4, tối đa 7
- cao (5): 10, 10, 8, 9, 9, phút 8, tối đa 10
Giá trị trung bình rơi vào thùng giữa, chúng tôi bỏ qua phần còn lại
Chúng tôi tạo ra 3 nhóm: 4, 5-6, 7. Thấp sẽ bắt đầu với số lượng 5 và tối đa là 3 và cao với tối thiểu 8 và số lượng là 5.
Đối với mỗi số, chúng tôi đếm số lần rơi trong nhóm thấp và cao, tối đa và tối thiểu và giữ cho nhóm ở giữa.
- cũ thấp (5)
- thấp (5): 4, 4, 4, 4, 4, tối đa 4
- giữa (3): 5,6,6
- cao (2): 7, 7, tối thiểu 7
- cũ cao (5)
Bây giờ chúng ta có thể tính toán trung vị trực tiếp: chúng ta có một tình huống như thế này
old low low middle high old high
x x x x x 4 4 4 4 4 4 5 6 6 7 7 x x x x x
vì vậy trung vị là 4,5.
Giả sử bạn biết một chút về phân phối, bạn có thể tinh chỉnh cách xác định phạm vi để tối ưu hóa tốc độ. Trong mọi trường hợp, hiệu suất nên đi với O (N), vì 1 + 1/3 + 1/9 ... = 1.5
Bạn cần tối thiểu và tối đa vì các trường hợp cạnh (ví dụ: nếu trung vị là trung bình giữa mức tối đa cũ thấp và phần tử tiếp theo).
Tất cả các hoạt động này có thể được song song, bạn có thể cung cấp 1/100 dữ liệu cho mỗi máy tính và tính toán 3 nhóm trong mỗi nút, sau đó phân phối nhóm bạn giữ. Điều này một lần nữa khiến bạn sử dụng mạng hiệu quả vì mỗi số được truyền trung bình 1,5 lần (vì vậy O (N)). Bạn thậm chí có thể đánh bại rằng nếu bạn chỉ chuyển các số tối thiểu giữa các nút (ví dụ: nếu nút 1 có 100 số và nút 2 có 150 số, thì nút 2 có thể cung cấp 25 số cho nút 1).
Trừ khi bạn biết nhiều hơn về phân phối, tôi nghi ngờ bạn có thể làm tốt hơn O (N) ở đây, bởi vì bạn thực sự cần phải đếm các yếu tố ít nhất một lần.