Cita:
Empezado por Delphius
La inserción binaria, al menos lo que yo tengo entendido y recuerdo de cátedra (de hace ya años...) sólo tiene sentido si la lista ya está está ordenada.
|
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.
Cita:
Empezado por Delphius
No si es que he analizado mal el algoritmo que propones, pero creo ese InsertaOrdenado() falla cuando se intenta insertar el 1er item y el vez de colocarlo en el índice 0, va a parar en el índice 1.
|
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.
Cita:
Empezado por Delphius
Existe un algoritmo, relativamente reciente, que es más rápido y además permite hacer inserciones de forma directa.
|
No entiendo que significa que un algoritmo de ordenamiento permita hacer inserciones directas.
Cita:
Empezado por Delphius
Por otro lado nada impide hacer un TOrderObjectList que implemente justamente tanto ordenamiento como inserción ordenada.
|
Así es, sería lo óptimo, pero hice el procedimiento para facilitar las cosas y no tener que implementar una clase derivada.
// Saludos