![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
Cita:
// Saludos |
|
#2
|
||||
|
||||
|
¡Ah! También está el mismo libro pero para la versión 6. Tiene su título en inglés (The Dark Side of Delphi) pero el libro está en español.
// Saludos |
|
#3
|
||||
|
||||
|
Roman tengo una duda sobre tu propuesta, que dicho sea de paso, es altamente ingeniosa como acostumbras.
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. Es decir que para poder insertar de forma ordenada, se debe ejecutar el método Sort() previamente. 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. Como nota: No sería de extrañar que en las nuevas versiones de Delphi el algoritmo de ordenamiento "base" o "kernel" de TList deje de ser QuickSort. Existe un algoritmo, relativamente reciente, que es más rápido y además permite hacer inserciones de forma directa. Se llama TimSort. Java, Python ya lo tienen implementado como el algoritmo de ordenamiento por defecto en sus últimas versiones. Por otro lado nada impide hacer un TOrderObjectList que implemente justamente tanto ordenamiento como inserción ordenada. Saludos, |
|
#4
|
||||
|
||||
|
Cita:
. 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:
Cita:
Cita:
// Saludos |
|
#5
|
||||
|
||||
|
Cita:
Cita:
![]() Cita:
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:
Saludos, |
|
#6
|
||||
|
||||
|
Cita:
Bueno, es que esto sería imposible ![]() // Saludos |
|
#7
|
||||
|
||||
|
Pues si. Pero es que yo asumía que por "previamente almacenados" hace referencia a que de algún modo se recuperaban los datos almacenados físicamente y que éstos ya se encontraban ordenados.
Voy a tener que dejar los supuestos ![]() Yo también le apuesto a TStringList cuando se trata de mantener los objetos ordenados de acuerdo a cierta "clave", aunque no me es de total agrado... Lo siento como que se está utilizando un parche. ![]() Resulta extraño que no hubiera de fábrica una lista de objetos ordenada, sin tener que recurrir a otra vía. Saludos, |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| adotable ordenado por un campo | leorene | Conexión con bases de datos | 2 | 13-02-2007 01:00:16 |
| Select ordenado por un campo pero localizado por otro | ingel | SQL | 2 | 04-01-2006 17:33:23 |
| Imprimir el listado ordenado por un campo | ilichhernandez | Impresión | 3 | 03-11-2005 19:44:13 |
| DBLookupComboBox ordenado | Supermagayin | Conexión con bases de datos | 2 | 12-04-2005 00:18:33 |
| Grid ordenado al añadir registro | Tomás | Varios | 0 | 13-03-2004 14:58:02 |
|