Si pero esa es tu necesidad y no lo tomes a mal.
Hablamos en líneas generales.
Yo hablo con Noter sobre un proyecto de otra envergadura supongo muchos mas registros pero no se cual sería el tamaño de los resgistros que justifica hacer un ordenamiento.
Entiendo la el punto de cruce estaría en hacer un busqueda 1 a 1, y tomar el tiempo hasta encontrarlo, y claro como análisis de peor caso, buscando 1 a 1, y resulta que el que busco esta al final. Entonces consultar cada registro me lleva un tiempo t y llegar al registro N me llevará Nt.
Por el otro lado tenerlo indexado y ordenados implica que la busqueda no llevara mas de algunos pocos registros pero el ordenamiento insume tiempo???
Hola.
Mira; has entrado en un tema que me extrañaba que nadie se hubiera intentado o necesitado pelear. Si sólo vamos a tomar la velocidad de búsqueda, entonces lo mejor va a ser siempre una búsqueda indexada; y si vamos a trabajar sobre muchos registros, entonces va a ser indispensable.
El quid de la cuestión es si es necesario o no, pues el código se va a complicar, y vamos a necesitar que nuestros datos sean de longitud constante para poder saltar directamente a un número de registro aleatorio, con lo que un pequeño error en la longitud de un registro nos puede corromper todo el archivo (poco recomendable modificar el archivo en un editor de texto, por ejemplo). Luego hay que tener en cuenta que, si bien las búsquedas se van a acelerar exponencialmente, el agregar un registro, por ejemplo, significa que hay que insertarlo en su orden correcto, lo que supone que deberemos reescribir todo el archivo desde la posición de inserción en adelante. Esto, para el ejemplo de este tema, no debiera ser muy costoso, pues cada registro consta de un solo dato (básicamente el propio archivo es un índice); pero imagina que cada registro tiene 500 bytes de longitud. Si necesitamos mover 1000 registros tras una inserción para mantenerlos ordenados, habría que mover ya medio mega de información. En ese caso los datos brutos se guardan como van llegando en el archivo, y en otro archivo índice almacenamos en orden sólo cada índice y puntero al archivo de datos, pero hay que tener en cuenta no olvidarnos de actualizar ese archivo cuando corresponda (tras agregar, modificar, eliminar...).
En fin, surbyte; no me quiero enrollar, y menos en este post que ya está solucionado; pero es un tema apasionante. Si quieres iniciar un proyecto por ese camino, abre un tema nuevo y podemos desarrollarlo para intentar tapar el hueco entre un archivo de búsqueda "tracicional" y la conexión a una base de datos remota.