중간

2012-10-27 5 views
0

가능한 중복 찾기 : I 요소들의 어레이가있는 경우
Efficiently finding the ranks of elements in an array?중간

을 A [0~15], 및 I는 중간의 범위 (A) 내에 있음을 알 [ 8 .. 11]. A [8..11]에서 A를 선택하여 모든 요소의 중앙값을 어떻게 구할 수 있습니까? 그것의 계급은 무엇입니까? 나는 이것에 대해 많은 것을 읽었지 만이 특정 질문에 대한 답을 찾을 수 없었다. 어떤 도움을 주셔서 감사합니다. 배열에는 기본적으로 2D 점이 포함되어 있으며 점을 직사각형 영역으로 분할하려고합니다.

+0

저는 몇 달 동안이 문제에 갇혀 있었고 아직도 A [8..11]에서 중간 값의 순위를 알 수있는 구체적인 방법을 찾을 수 없었습니다. – user1780104

+0

나는 그것이 확실하지 않습니다. 속는 사람 btw. 이 질문은 원래 배열을 건드리지 않고 순위를 찾는 방법을 묻지 만 여전히 모든 것을 볼 수 있습니다. 이 배열에는 전체 배열을 볼 수 없다는 제한이 있습니다. – paxdiablo

+0

@Neil 중간 값을 찾기 위해 모든 요소를 ​​검사하고 싶지는 않습니다. [8 ... 11]에 있습니다. 이 모든 것을 스캔하고 싶다면 알고리즘을 찾는 일반적인 중앙값 계산을 수행했을 것입니다. – user1780104

답변

2

요소 집합의 중앙값을 알기 란 단순히 해당 요소의 하위 집합을 관찰하는 것입니다. 중앙값은 전체 집합의 각 요소에 따라 다릅니다.

1

나는 그렇게 생각하지 않는다. 중앙값은 정렬시 데이터를 두 개로 분할하는 데이터 요소입니다.

정렬 된 경우 대개 데이터 [0..15] 배열의 데이터 [7] 및 데이터 [8]의 평균이됩니다.

정렬되지 않은 경우 모두 요소를 검사하지 않고도 찾을 방법이 없습니다.

0

배열을 "작은"값과 "큰"값의 두 세트로 나누려면 가장 쉬운 방법은 배열을 정렬하는 것입니다. 전체 배열을 정렬하지 않으려면 수정 된 퀵 정렬을 사용할 수 있습니다. 일단 배열을 분할하면 중앙값을 포함하는 배열의 절반 만 정렬합니다 (파티션이 중앙값으로 밝혀 졌다면 어떤 경우에는 그만 둘 수 있습니다).