Ordinamento impostando una proprietà di sequenza invece di riorganizzare la posizione nell'elenco

1

Nel mio progetto ho una lista di elementi che dovrebbero essere ordinati, ma invece di riorganizzare le posizioni degli elementi nell'array voglio impostare una proprietà 'Sequence' che definisca i posti dell'elemento nella lista.

Attualmente utilizzo un ordinamento di tipo merge per riorganizzare l'array e quindi eseguire il loop sugli elementi per impostare la proprietà della sequenza.
Ci sono modi più efficienti per farlo?
C'è un termine di ricerca che mi manca o forse questo è già il modo più veloce?

    
posta Boris Callens 03.03.2017 - 10:32
fonte

1 risposta

4

In questi giorni, la maggior parte delle volte stai ordinando record di qualsiasi tipo, in realtà stai solo ordinando puntatori a loro, mentre i record rimangono dove sono in memoria. Ciò significa che eseguire un ordinamento e quindi una rietichettatura non è in effetti più costoso del normale ordinamento, dal momento che l'ordinamento è probabilmente superlineare e la rietichettatura è lineare nel tempo, e non c'è una grande costante a rovinare le cose.

Solo se fai hai una matrice di memoria grezza e riordina fisicamente i record in giro è utile inventare una soluzione più intelligente per evitare il mischiare. Di solito, la soluzione sarà essenzialmente introdurre un livello di puntatori nei record, proprio come la maggior parte delle collezioni già fanno.

    
risposta data 03.03.2017 - 10:47
fonte

Leggi altre domande sui tag