Có thể trùng lặp:
Thuật toán trung bình cán trong C
Cho rằng số nguyên được đọc từ một luồng dữ liệu. Tìm trung bình của các yếu tố đọc cho đến nay theo cách hiệu quả.
Giải pháp tôi đã đọc: Chúng ta có thể sử dụng một heap tối đa ở bên trái để biểu diễn các phần tử nhỏ hơn trung vị hiệu quả và một heap tối thiểu ở bên phải để biểu diễn các phần tử lớn hơn phần tử trung bình hiệu quả.
Sau khi xử lý một phần tử đến, số phần tử trong heap khác nhau nhiều nhất là 1 phần tử. Khi cả hai heap chứa cùng một số phần tử, chúng ta sẽ thấy trung bình dữ liệu gốc của heap là trung bình hiệu quả. Khi các đống không cân bằng, chúng ta chọn trung vị hiệu quả từ gốc của heap chứa nhiều phần tử.
Nhưng làm thế nào chúng ta sẽ xây dựng một đống tối đa và tối thiểu heap tức là làm thế nào chúng ta biết được trung vị hiệu quả ở đây? Tôi nghĩ rằng chúng ta sẽ chèn 1 phần tử trong heap tối đa và sau đó là phần tử tiếp theo trong heap, và cứ như vậy cho tất cả các phần tử. Sửa tôi nếu tôi sai ở đây.