La risposta è probabilmente ovvia ma non a me in questo momento, quindi mi chiedevo se qualcuno che è migliore con gli algoritmi di ordinamento può aiutarmi a guidarmi nella giusta direzione. Questo non è compito a casa, sto legittimamente cercando di lavorare all'interno di un progetto esistente per qualcosa di relativo al lavoro.
In sostanza, comincio con un elenco non ordinato di oggetti dati che rappresentano qualcosa di simile ai commenti del forum. Questi oggetti POSSONO esplicitamente avere uno e solo un genitore diretto. In altre parole
Parent (1...*) ----------- (1...1) Child
Un bambino ha un riferimento al suo genitore, tuttavia un genitore non può vedere i suoi figli (esplicitamente).
Tipicamente quando si ordina una lista si passerebbe un comparatore che, dato un qualsiasi due oggetti dati nella collezione, dovrebbe restituire un numero intero che rappresenta la distanza tra i due oggetti in un grafico. La distanza tra due commenti completamente indipendenti sarà basata sul valore Timestamp dell'oggetto dati.
Il problema è che qualsiasi due oggetti dati può e deve essere confrontato solo con un timestamp con altri oggetti dati dello stesso ramo padre. Ecco un esempio:
DO1 - Time(1000ms)
|___DO3 - Time(5000ms)
DO2 - Time(2000ms)
DO1 e DO2 confrontati daranno un numero negativo, quindi questi due sono ordinati correttamente l'uno rispetto all'altro. Anche DO3 a DO1 è corretto perché posso supporre che qualsiasi ramo sopra un commento debba essere inferiore a. Il problema viene dal confronto tra DO3 e DO2. Ho pensato che in questo caso dovrei confrontare il genitore di ordine più alto con DO2 e questo funziona finché non ci sono figli DO sotto DO3.
Sto cercando di capire se il grafico dell'oggetto corrente è ancora abbastanza informazioni per un comparatore per restituire correttamente un numero appropriato per due confronti qualsiasi. Forse il comparatore deve essere inizializzato prima con la lista non ordinata in modo che possa costruire una struttura ad albero in cui posso vedere esplicitamente una lista di bambini di qualsiasi genitore dato? O forse ho bisogno di refactoring? A questo punto non sono preoccupato per le prestazioni. Grazie.