Ho letto le statistiche degli ordini per trovare l'elemento k-th più piccolo (o più grande) in una matrice di dimensione n nel tempo lineare O (n).Mediana delle medie
C'è un passo che è necessario per trovare la mediana delle mediane.
- Dividere l'array in [n/5] parti. Ogni parte ha 5 elementi.
- Trova la mediana in ogni parte. (Abbiamo [n/5] numeri ora)
- Ripeti i passaggi 1 e 2 finché non abbiamo solo l'ultimo numero. (Cioè ricorsiva)
T (n) = T (n/5) + O (n) e possiamo ottenere T (n) = O (n).
Ma è proprio vero che il numero che otteniamo non è la mediana delle mediane, ma la mediana delle mediane delle mediane delle mediane delle mediane delle mediane, se abbiamo una vasta gamma.
Si prega di considerare un array con 125 elementi.
In primo luogo, è diviso in 25 parti e troviamo 25 mediane. Quindi, suddividiamo questi 25 numeri in 5 parti e troviamo 5 mediane, Infine, otteniamo il numero che è mediano delle mediane delle mediane. (Non mediana delle mediane)
Il motivo per cui mi interessa è che, posso capire che ci sono al massimo circa [3/4] * n elementi che sono più piccoli (o più grandi) della mediana delle mediane. Ma cosa succede se non è la mediana delle mediane ma la mediana delle mediane delle mediane? Nel caso peggiore ci devono essere meno elementi che sono più piccoli (o più grandi) del pivot, il che significa che il perno è più vicino al limite dell'array.
Se disponiamo di un array MOLTO grande, abbiamo trovato la mediana delle mediane delle mediane delle mediane delle mediane delle mediane. Nel peggiore dei casi il pivot che abbiamo trovato può essere ancora molto vicino al limite e qual è la complessità temporale in questo caso?
Ho creato un set di dati di 125 elementi. Il risultato è 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
dove inf indica che il numero è abbastanza grande.
Grazie per la risposta! Se l'algoritmo mediano-di-mediani non è ricorsivo, cosa fai al punto 3 (Trova la mediana delle mediane e usala come pivot)? Nei miei dati, 9 è il 27 ° numero più piccolo, il che significa che 26 numeri tra 125 sono inferiori alla mediana delle mediane, che è circa il 21% di essi. – 01zhou
Sto ancora lavorando alla matematica;) – gramonov
Basta usare la mediana delle mediane che si trovano nel punto 3 come perno. – gramonov