Tôi chỉ tự hỏi phương pháp tốt nhất cho phép tính đó là gì. Giả sử tôi có một mảng đầu vào của các giá trị và mảng các ranh giới - tôi muốn tính toán/phân bổ tần số phân bổ cho từng phân đoạn trong mảng ranh giới.Cách nhanh nhất để tính toán phân phối tần số cho mảng trong C# là gì?
Ý tưởng hay là sử dụng tìm kiếm nhóm cho điều đó?
Trên thực tế tôi thấy rằng câu hỏi Calculating frequency distribution of a collection with .Net/C#
Nhưng tôi không hiểu làm thế nào để sử dụng xô cho mục đích đó gây ra kích thước của mỗi thùng có thể khác nhau trong hoàn cảnh của tôi.
EDIT: Sau tất cả các cuộc thảo luận tôi có giải pháp vòng lặp bên trong/bên ngoài, nhưng tôi vẫn muốn loại bỏ vòng lặp bên trong bằng từ điển để có hiệu suất O (n) trong trường hợp đó. giá trị vào chỉ mục nhóm. Vì vậy, chúng ta cần một số loại hàm băm với O (1) phức tạp? Có ý tưởng nào để làm nó không không?
Bạn có thể mô tả các mảng ranh giới tốt hơn một chút? Có bất kỳ mối quan hệ nào giữa các ranh giới khác nhau (tức là chúng có liên tiếp) hay chúng hoàn toàn ngẫu nhiên về kích thước và "vị trí"? Tôi giả sử mảng ranh giới hoàn toàn bao gồm phạm vi giá trị có thể - đó là sự thật? Ngoài ra, tôi giả sử không có chồng chéo - phải không? –
nhanh nhất trong ý nghĩa của chữ "O" lớn hoặc theo ý nghĩa của mã nhỏ? Một cách tiếp cận đơn giản sẽ là viết cho mình một hàm Func và sử dụng hàm này với LINQ .GroupBy để nhóm nhóm này thành "Nhóm" - nhưng có thể có cách tính toán nhanh hơn để thực hiện việc này. –
Carsten
Có, bạn đã đúng. Các giá trị biên là tăng đơn điệu về giá trị. Chúng không có chồng chéo và bao trùm phạm vi giá trị có thể. Ví dụ: 0, 10, 50, 100, 120. – Andrey