En y réfléchissant un peu, vous pouvez le faire en temps O (n), même si cela prendra un peu plus de choses qui ajouteront un peu de frais généraux. (Toujours sur)).
Vous pouvez utiliser un système de hachage universel afin de pouvoir créer une bonne table de hachage. Essentiellement, hachage par l'ID d'instance.
-Prenez chaque file d'attente et jetez-la dans un noeud doublement lié. - Insérez chaque noeud dans la table de hachage. - Lorsque vous insérez, vérifiez si le parent et/ou l'enfant sont dans la table de hachage et créez un lien en conséquence. _ Lorsque vous avez terminé, commencez en tête (ce que vous devriez savoir au premier passage), parcourez la liste et ajoutez-la à votre LinkedList ou utilisez simplement la liste double liée qui en résulte.
Ceci prend un passage qui est O (n), et la table de hachage prend O (n) pour initialiser et les insertions sont O (1).
Le problème qui vous reste est de choisir une bonne implémentation de hashtable qui vous donnera ces résultats.
En outre, vous devez tenir compte de la charge de mémoire, car je ne sais pas combien de résultats vous attendez. Espérons assez pour garder en mémoire.
Je ne connais pas ou ne pense pas qu'il existe une solution basée sur une requête SQL, mais mes connaissances SQL sont très limitées.
Espérons que cela aide!
Que voulez-vous faire de plus que simplement les mettre dans la liste chaînée? L'ajout d'un élément dans une LinkedList est une opération O (1), donc ajouter n éléments est une opération O (n). –
Guffa
Je veux les mettre dans le bon ordre. Je vais obtenir une liste dans un ordre aléatoire si je les sélectionne simplement dans la base de données. – countach16
Pourquoi les obtiendriez-vous dans un ordre aléatoire si vous les sélectionnez? Vous les obtiendrez sans aucun doute plus rapidement avec la base de données qu'avec le code, surtout si la table est indexée. –