Przeczytałem statystyki zleceń, aby znaleźć k-ty najmniejszy (lub największy) element w tablicy o rozmiarze n w czasie liniowym O (n).Median of Medians
Jest jeden krok, który musi znaleźć medianę median.
- Podziel macierz na [n/5] części. Każda część ma 5 elementów.
- Znajdź medianę w każdej części. (Mamy teraz numery [n/5])
- Powtarzaj kroki 1 i 2, dopóki nie będziemy mieli tylko ostatniego numeru. (Tj rekurencyjne)
T (n) = T (N/5) + O (n) i można otrzymać T (n) = O (n).
Ale czy to prawda, że liczba, którą w końcu uzyskaliśmy, nie jest medianą median, ale medianą median mediany median mediany median, jeśli mamy szeroki wachlarz.
Proszę wziąć pod uwagę tablicę zawierającą 125 elementów.
Po pierwsze, dzieli się na 25 części i znajdujemy 25 median. Następnie dzielimy te 25 liczb na 5 części i znajdujemy 5 median, Wreszcie uzyskamy liczbę, która jest medianą mediany median. (Nie mediana median)
Powodem, dla którego się o to troszczę, jest to, że rozumiem, że jest co najwyżej około [3/4] * n elementów, które są mniejsze (lub większe) niż mediana median. Ale co, jeśli nie jest to mediana median, ale mediana median median? W gorszym przypadku musi być mniej elementów, które są mniejsze (lub większe) niż czop, co oznacza, że czop jest bliżej granicy macierzy.
Jeśli mamy BARDZO duży zbiór, i znaleźliśmy jego medianę median median z median median. W najgorszym przypadku oś obrotowa, którą znaleźliśmy, wciąż może być bardzo bliska granicy i jaka jest w tym przypadku złożoność czasu?
Zrobiłem zestaw danych z 125 elementów. Czy wynik 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
gdzie inf oznacza, że liczba jest wystarczająco duża.
Dziękuję za odpowiedź! Jeśli algorytm median-of-mediana nie jest rekurencyjny, to co robisz w kroku 3 (Znajdź medianę median i użyj jej jako osi obrotu)? W moich danych 9 jest 27. najmniejszą liczbą, co oznacza, że 26 liczb spośród 125 jest mniejszych niż mediana median, czyli około 21% z nich. – 01zhou
Nadal pracuję nad matematyką;) – gramonov
Po prostu użyj mediany median znalezionej w kroku 3 jako sworznia. – gramonov