Ordinamento: utile per qualcosa di più della semplice visualizzazione dei dati?

1

Contesto

Attualmente sto lavorando a un progetto personale che coinvolge JavaScript funzionale reattivo e ho trovato una domanda strana. Nota che questa domanda non è specifica di JavaScript, ma questo è il contesto in cui lo sto chiedendo.

Scenario

Quando si filtra una raccolta di dati, si finisce con un set di dati più piccolo. Pertanto, il filtraggio corretto dei dati in precedenza (anziché in un secondo momento) finisce per ottimizzare il codice successivo, poiché non ha bisogno di scorrere la porzione di dati che non verranno utilizzati. (pensa al filtraggio prima della mappatura, invece del visto-versa)

Tuttavia, mi chiedevo se ci sia uno scenario in cui l'ordinamento offre vantaggi simili, o se l'ordinamento è generalmente usato come un modo per formattare i dati da visualizzare, in modo che un utente finale possa assorbirlo più facilmente (ordina per nome, città, stato, ecc.)

Domanda

Quando si ordinano i dati più desiderabili rispetto all'ordinamento delle corrispondenti viste di quei dati?

    
posta cwharris 15.01.2013 - 15:57
fonte

2 risposte

5

Bene, la risposta ovvia è che per alcune strutture di dati, sapendo che i dati sono già ordinati, le ricerche cambiano da O (n) a O (log n), ad es. trovare un elemento in un array usando ricerca binaria piuttosto che linear .

Non sono sicuro di quanto sia utile per te se stai facendo FRP, si presume che FRP significhi che probabilmente non stai usando strutture come array in primo luogo?

Vorrei anche sottolineare che questo è un po 'diverso dal filtro e quindi dalla mappa. la mappa ottiene il vantaggio di un filtro precedente senza bisogno di alcuna conoscenza del filtro. tuttavia, la ricerca binaria richiede la conoscenza dei dati ordinati.

    
risposta data 15.01.2013 - 16:01
fonte
3

Mi vengono in mente vari scenari, i libri di testo sono ricerche e trovano valori minimi / massimi; su una lista ordinata, la ricerca è tipicamente O (log n) e min / max è O (1), mentre su un elenco non ordinato, otterrai O (n) per entrambi.

Oltre a ciò, a seconda di cosa devi fare con i tuoi dati, potrebbero essere possibili altre ottimizzazioni che sfruttano l'ordinamento di un elenco - pensa a cose come l'ordinamento degli assi nel rilevamento delle collisioni.

    
risposta data 15.01.2013 - 16:32
fonte

Leggi altre domande sui tag