나는 그 계산을 위해 가장 좋은 방법이 무엇인지 궁금 할뿐입니다. 입력 배열의 값과 경계 배열이 있다고 가정합니다. 경계 배열의 각 세그먼트에 대한 빈도 분포를 계산/버킷 화하려고합니다.C#에서 배열의 도수 분포를 계산하는 가장 빠른 방법은 무엇입니까?
버켓 검색을 사용하는 것이 좋습니까?
사실 나는 그 질문에 Calculating frequency distribution of a collection with .Net/C#을 발견하지만 각 버킷의 크기가 내 상황에서 다를 수 있습니다 원인이 그 목적 버킷을 사용하는 방법을 이해하지 않습니다.
편집 : 내부/외부 루프 솔루션을 가지고 있지만, 내가 입력을 해시 할 필요가 제대로 이해하면 아직도 내가,이 경우 O (n)의 퍼포먼스를 얻기 위해 사전에 내부 루프를 제거하려는 모든 토론 후 값을 버킷 인덱스로 변환합니다. 그래서 우리는 O (1) 복잡성을 지닌 일종의 해시 함수가 필요합니까? 어떤 아이디어로 그것을 할 수 있습니까?
당신은 조금 더 경계 배열을 설명 할 수 있습니까? 다양한 경계 사이에 어떤 관계가 있습니까? (즉 순차적입니까?) 크기 나 위치가 완전히 무작위입니까? 경계 배열이 가능한 값의 범위를 완전히 커버한다고 가정합니다. 사실입니까? 또한 중복이 없다고 가정합니다. 맞습니까? –
큰 "O"또는 작은 코드의 의미에서 가장 빠릅니까? 간단한 접근법은 자신에게 Func 함수를 작성하고이를 Linqs .GroupBy와 함께 사용하여 이것을 "Bucket"으로 그룹화 할 수 있습니다. 그러나이를 수행하는 계산 방법이 더 빠를 수도 있습니다. –
Carsten
네, 맞습니다. 경계 값은 값이 단조롭게 증가합니다. 그들은 겹치지 않으며 가능한 값의 범위를 커버합니다. 예 : 0, 10, 50, 100, 120. – Andrey