선형 통계량 O (n)의 크기 n의 배열에서 k 번째로 작은 (또는 가장 큰) 요소를 찾기 위해 주문 통계를 읽었습니다.중앙값의 중앙값
는 중간 값의 평균을 찾을 필요가 한 단계가있다.
- [n/5] 부분으로 배열을 분할합니다. 각 부분에는 5 개의 요소가 있습니다.
- 각 부분의 중앙값을 찾습니다. (현재 숫자가 [n/5]입니다.)
- 마지막 번호 만있을 때까지 1 단계와 2 단계를 반복하십시오. (즉 재귀 적)
T (n/5) + O (n) 그리고 T (n) = O (n)을 얻을 수있다.
그러나 우리가 마침내 얻는 수는 중간 값의 중앙값이 아니라 중앙값의 중앙값의 중앙값의 중앙값입니다.
125 개의 요소가있는 배열을 고려하십시오.
첫째, 25 개 부분으로 분할하고, 우리는 25 명 중간 값을 찾을 수 있습니다. 그런 다음이 25 개의 숫자를 5 부분으로 나누어 5 개의 중앙값을 찾습니다. 마지막으로 중간 값의 중간 값 인 숫자를 얻습니다. (중앙값이 중간이 아님)
내가 신경 쓰는 이유는 중앙값의 중앙값보다 작은 (또는 큰) 요소가 대부분 있음을 이해할 수 있습니다. 그러나 중앙값의 중앙값이 아니라 중간 값의 중앙값의 중앙값이된다면 어떨까요? 더 나쁜 경우에는 피벗보다 작거나 (또는 더 큰) 요소가 적어야합니다. 즉 피벗이 배열의 경계에 더 가깝습니다.
우리는 매우 큰 배열이있는 경우, 우리는 중간 값의 중간 값의 중간 값의 중간 값의 중간 값의 그것의 중간을 발견했다. 최악의 경우 우리가 찾은 피벗은 여전히 한계에 매우 근접 할 수 있으며이 경우 시간 복잡도는 무엇입니까?
125 개 요소의 데이터 집합을 구성했습니다. 결과는 9입니까?
0.8 0.9 1 inf inf
1.8 1.9 2 inf inf
6.8 6.9 7 inf inf
inf inf inf inf inf
inf inf inf inf inf
2.8 2.9 3 inf inf
3.8 3.9 4 inf inf
7.8 7.9 8 inf inf
inf inf inf inf inf
inf inf inf inf inf
4.8 4.9 5 inf inf
5.8 5.9 6 inf inf
8.8 8.9 9 inf inf
inf inf inf inf inf
inf inf inf inf inf
inf inf inf inf inf
inf inf inf inf inf
inf inf inf inf inf
inf inf inf inf inf
inf inf inf inf inf
inf inf inf inf inf
inf inf inf inf inf
inf inf inf inf inf
inf inf inf inf inf
inf inf inf inf inf
여기서 inf는 충분히 큰 숫자를 의미합니다.
답장을 보내 주셔서 감사합니다! median-of-medians 알고리즘이 재귀가 아닌 경우 3 단계 (중앙값의 중앙값을 찾아서 피벗으로 사용)에서 무엇을합니까? 내 데이터에서 9는 27 번째로 작은 숫자로, 125 개 중 26 개가 중간 값의 중간 값보다 작음을 의미하며 약 21 %입니다. – 01zhou
나는 여전히 수학을하고 있습니다.) – gramonov
3 단계에서 찾은 중간 값의 중앙값을 피벗으로 사용하십시오. – gramonov