Si la lista no está ordenada, ¿importa dónde inserte su artículo? De lo contrario, intente al principio o al final (lista de doble enlace).
¿Pero si quiere decir que la lista ya está ordenada y desea mantenerla así?
Mantenga una matriz pequeña con elementos nuevos para insertar. Ordenar la matriz. Ahora puede revisar una vez su lista y ver dónde debe insertarse cada elemento nuevo. De lo contrario, tendría que recorrer, en promedio, la mitad de la lista cada vez que inserte un elemento en el lugar correcto.
Con la solución anterior, si inserta m elementos, amortiza el costo de revisar su lista sobre m elementos.
- ¿Quién puede resolver esta pregunta matemática :)?
- ¿Cuál es la razón por la que [matemáticas] A ^ n [/ matemáticas] contiene el número de caminatas de longitud n?
- Cómo resolver un problema como este
- ¿Cómo resolver esta serie?
- ¿Cómo puede un estudiante de secundaria comenzar a aprender criptografía?
También podría pensar en otras estructuras de datos. ¿Con qué frecuencia agrega / elimina elementos? ¿Con qué frecuencia los lee (aparte de compararlos para encontrar el punto de inserción)? Tal vez algún tipo de árbol (binario) haría? ¿O algún tipo de estructura de datos que combine el beneficio de listas y matrices / vectores?
¿Cuántos artículos tienes? Si no hay tanto, un std :: vector en C ++ podría ser una buena opción, ya que todos los ajustes en el caché. En lugar de mover elementos hacia arriba, puede crear un vector separado con elementos nuevos para agregar, ordenar esto, y ahora realiza una “fusión de clasificación” y crea un tercer vector combinado.
No existe una regla general sobre qué es lo mejor, depende de cuántos elementos tenga, con qué frecuencia inserte / quite elementos, con qué frecuencia los use (búsquelos y posiblemente cambie).