Ver Mensaje Individual
  #19  
Antiguo 17-08-2012
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Reputación: 27
Delphius Va camino a la fama
Cita:
Empezado por roman Ver Mensaje
Así es. Por eso hay que usarla desde el principio . Cuando la lista está vacía, no hay nada qué ordenar y por tanto llamar a Sort está de más. Pero si se intenta usar sobre una lista desordenada, ciertamente hay que llamar a Sort primero.
Es que a como entendí de las palabras de sebamawa es que quería evitarse el ordenamiento y hacer inserciones ordenadas directamente sobre la lista, con los datos previamente almacenados.


Cita:
Empezado por roman Ver Mensaje
Si la lista está vacía, Primero = 0 y Ultimo = -1 así que el ciclo while no se ejecuta y se hace la inserción en el índice 0.
Marche unos lentes para Delphius... no vi ese .Count -1


Cita:
Empezado por roman Ver Mensaje
No entiendo que significa que un algoritmo de ordenamiento permita hacer inserciones directas.
Si... admito que lo dije muy flojo y que no se entendería bien... Como TimSort() es un algoritmo híbrido, posee una combinación del Merge() con Insertion() por lo que posee la particularidad de ofrecer internamente una insercción ordenada.
Con TimSort, de lo poco que le entendí de su funcionamiento, es capaz de determinar cuando aplicar un Merge() y cuando aprovechar una insercción. Si se tuviera TimSort por defecto, al hacer un Add, Insert, Move, etc de forma "automática" se hacen las cosas con un único algoritmo y es posible que en ningún momento se ejecute la parte del Merge().


Cita:
Empezado por roman Ver Mensaje
Así es, sería lo óptimo, pero hice el procedimiento para facilitar las cosas y no tener que implementar una clase derivada.
// Saludos
No sería extraño que en las nuevas versiones ya existiera una clase como esta. Lo más "cercano" a ésta que veo en D6 es TOrderedList, la clase base para TStack y TQueue, que ofrece el método virtual y abstracto PushItem() que está pensado para determinar como ha de tener lugar la inserción del ítem. Tanto TStack como TQueue sobrescriben a éste para conseguir la inserción por pila y cola respectivamente.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita