lunes, 13 de mayo de 2013

métodos de ordenamiento


Un algoritmo de ordenamiento es un algoritmo que pone elementos de una lista o un vector en una secuencia dada por una relación de orden, es decir, el resultado de salida ha de ser una permutación —o reordenamiento— de la entrada que satisfaga la relación de orden dada.
Los algoritmos de ordenamiento se pueden clasificar de las siguientes maneras:  La más común es clasificar según el lugar donde se realice la ordenación
·         Algoritmos de ordenamiento interno: en la memoria del ordenador.
·         Algoritmos de ordenamiento externo: en un lugar externo como un disco duro.
Por el tiempo que tardan en realizar la ordenación, dadas entradas ya ordenadas o inversamente ordenadas:
·         Algoritmos de ordenación natural: Tarda lo mínimo posible cuando la entrada está ordenada.
·         Algoritmos de ordenación no natural: Tarda lo mínimo posible cuando la entrada está inversamente ordenada.
Por estabilidad: un ordenamiento estable mantiene el orden relativo que tenían originalmente los elementos con claves iguales. Por ejemplo, si una lista ordenada por fecha se reordena en orden alfabético con un algoritmo estable, todos los elementos cuya clave alfabética sea la misma quedarán en orden de fecha.

Ordenación por intercambio (burbuja)

Es uno de los métodos relativamente más sencillo e intuitivo, pero también resulta ser muy ineficiente. Se basa en la ordenación por cambio, y recibe su nombre de la semejanza con las burbujas de un depósito de agua donde cada burbuja busca su propio nivel.
Los pasos a efectuar en el caso de una ordenación ascendente (en el caso de la ordenación descenderte solo habría que cambiar el signo de comparación) son:
1. Comparar el primer y segundo elemento, intercambiarlos si el primero es mayor que el segundo; luego se compara el primero con el tercero, intercambiándose en caso necesario, y el proceso se repite hasta llegar al último elemento.

2. Se repite el paso anterior, pero ahora con el segundo y tercero, en caso de ser necesario se intercambian, y así hasta llegar a comparar el segundo con el ultimo.
Consideremos el siguiente ejemplo. Se cuenta con un vector de 6 posiciones donde se inicia una lista de números { 7, 2, 8, 3, 5, 1 }, la cual será ordenada en forma ascendente { 1, 2, 3, 5, 7, 8 }, observe como se declara una variable constante entera llamada n la cual tiene un valor de 6, enseguida se declara un vector de tipo entero que contendrá una cantidad n de casillas, en este caso 6, declaramos también las variables i y j que nos ayudaran a desplazarnos entre casilla y  casilla para hacer las comparaciones. Y finalmente la variable tem, almacenara temporalmente el valor a intercambiar entre las casillas que lo necesiten.
For (int i = 0; i < n-1; i++)
For (int j = i + 1; j < n; j++) {
if ( v[i] > v[j] ) { //realiza la comparación
int tem = v[i]; //si es cierta intercambia los datos
v[i] = v[j];
v[j] = tem;
}
}

Método de selección

La idea básica es encontrar el elemento más pequeño (grande), en orden ascendente de la lista, e  intercambiarlo con el elemento que ocupa la primera posición en la lista, a continuación se busca el siguiente elemento más pequeño y se transfiere a la segunda posición. Se repite el proceso hasta que el último elemento ha sido transferido a su posición correcta.
El algoritmo de ordenación depende a su vez del algoritmo necesario para localizar el componente mayor (menor) de un array. Es un proceso muy similar al método de la burbuja pero haciendo más eficiente la búsqueda y evitando intercambios innecesarios.
for (int i = 0, j = 0, k = 0; i < n-1; i++) {
k = i;
for (j = i+1; j < n; j++)
if ( v[k] > v[j] )
k = j;
int tem = v[i];
v[i] = v[k];
v[k] = tem;
}
}

Método de Inserción

Este método también se denomina “método del jugador de cartas”, por la semejanza con la forma de clasificar las cartas de una baraja, insertando cada carta en el lugar adecuado.
El algoritmo ordena los dos primeros elementos de la lista, a continuación el tercer elemento se inserta en la posición que corresponda, el cuarto se inserta en la lista de tres elementos, y así sucesivamente. Este proceso continua hasta que la lista este totalmente ordenada.
for (int i = 1, j = 0; i < n; i++) {
int tem = v[i];
j = i - 1;
while ( j >= 0 && tem < v[j]) {
v[j+1] = v[j];
j--;
}
v[j+1] = tem;
}
}
Ordenación basada en comparaciones (Heap Sort)

Es una variante del algoritmo de selección, El ordenamiento por montículos (Heap sort) es un algoritmo de ordenación no recursivo, no estable, con complejidad computacional O(n log n).
Este algoritmo consiste en almacenar todos los elementos del vector a ordenar en un montículo
(heap), y luego extraer el nodo que queda como nodo raíz del montículo (cima) en sucesivas iteraciones obteniendo el conjunto ordenado. Basa su funcionamiento en una propiedad de los montículos, por la cual, la cima contiene siempre el menor elemento (o el mayor, según se haya definido el montículo) de todos los almacenados en él.

Ordenamiento Por Enumeración

En este tipo de algoritmos cada elemento es comparado contra los demás. En la comparación se cuenta cuántos elementos son más pequeños que el elemento que se está analizando, generando así una ENUMERACION. El número generado para cada elemento indicará su posición.
No basado en comparación.

jueves, 2 de mayo de 2013

estructura de archivos directos

unidad 4


ESTRUCTURA DE ARCHIVOS DIRECTOS

Son aquellos en los que los registros se pueden localizar mediante una dirección. El acceso a los registros es directo.

La organización directa es aquella que permite un posicionamiento sobre registros específicos al localizar una llave. Lo anterior permite agilizar la localización de un dato en un archivo determinado al no requerirse el procesamiento de los registros contiguos previos

Los archivos directos explotan la capacidad de los discos para acceder directamente a cualquier bloque de dirección conocida. Como en los archivos secuenciales y secuenciales indexados, se requiere un campo clave en cada registro. Sin embargo, aquí no hay concepto de ordenamiento secuencial.


Estructura


1.-Ajuste de llave a esqueleto: Este método se utiliza cuando la llave contiene digitos y opcionalmente caracteres alfabéticos. El algoritmo de asignación consiste en tomar de la llave aquellos caracteres (preferentemente digitos) que presenten mayor variación y utilizarlos como dirección en un esqueleto previamente creado. El esqueleto contendrá la cantidad de registros inicialmente estimados y en forma contigua al área de desborde para los sinónimos resultantes

2.-Archivo clasificado para búsqueda binaria: Se requiere que el archivo principal se mantenga ordenado respecto a la llave en todo momento. La ventaja de este método reside en la alta velocidad de acceso; su desventaja consiste en el tiempo que debe invertirse para mantener clasificado al archivo en todo momento. Este método se utiliza cuando el tiempo de búsqueda tiene una prioridad extremadamente alta en relación al tiempo de actualización.

3.-Transformación de llaves (Hashing): Este método consiste en descomponer la llave en múltiples fragmentos y mediante la aplicación de diverso algoritmos, dar origen a un numero en un intervalo determinado y utilizarlo como dirección de registro en el esqueleto.

4.-Relación directa - Llave dirección: Este método es aplicable para sistemas donde los elementos a registrar reciben un folio consecutivo como llave. La llave del registro se hace corresponder con la dirección física de este, por lo que la velocidad de acceso es extremadamente alta.


A cada archivo relativo debe definírsele una relación que será utilizada para
obtener una dirección física (o lógica) a partir de un valor llave. Esta relación H es
una función de mapeo y se obtiene mediante métodos de conversión clave dirección o técnicas hashing

técnica de Hashing

En informática , Hashing es un método para resumir o identificar un dato a través de la probabilidad , utilizando una función hash o algoritmo hash. Un hash es el resultado de dicha función o algoritmo.



Una función de hash en funcionamiento 

Una función de hash es una función para sumarizar o identificar probabilísticamente un gran conjunto de información ( dominio ), dando como resultado un conjunto imagen finito generalmente menor (un subconjunto de los números naturales por ejemplo). Varían en los conjunto de partida y de llegada y en cómo afectan a la salida similaridades o patrones de la entrada. Una propiedad fundamental del hashing es que si dos resultados de una misma función son diferentes, entonces las dos entradas que generaron dichos resultados también lo son. 

Son usadas en múltiples aplicaciones, como los arrays asociativos , criptografía , procesamiento de datos y firmas digitales entre otros. Una buena función de hash es una que experimenta pocas colisiones en el conjunto esperado de entrada; es decir que se podrá identificar unívocamente las entradas (ver función inyectiva ). 

Muchos sistemas relacionados con la seguridad informática usan funciones o tablas de hashing . 



Doble Hashing

Consiste en aplicar una segunda función hashing sobre la clave que provoca colisión. El espacio de dirección objetivo del segundo hash puede ser el mismo archivo relativo (direccionamiento abierto) o bien un archivo de desborde separado (separación de desborde).


viernes, 8 de marzo de 2013

unidad 2 "Archivos secuenciales"


QUE SON? 

Es la forma básica de organizar un conjunto de registros, que forman un archivo, utilizando una organización secuencial. En un archivo organizado secuencialmente, lo registros quedan grabados consecutivamente cuando el archivo se utiliza como entrada. En la mayoría de los casos, los registros de un archivo secuencial quedan ordenados de acuerdo con el valor de algún campo de cada registro. Semejante archivo se dice que es un archivo ordenado; el campo, o los campos, cuyo valor se utiliza para determinar el ordenamiento es conocido como la llave del ordenamiento. Un archivo puede ordenarse ascendente o descendentemente con base en su llave de ordenamiento.

La forma más común de estructura de archivo es el archivo secuencial. En este tipo de archivo, un formato fijo es usado para los registros. Todos los registros tienen el mismo tamaño, constan del mismo número de campos de tamaño fijo en un orden particular. Como se conocen la longitud y la posición de cada campo, solamente los valores de los campos se necesitan almacenarse; el nombre del campo y longitud de cada campo son atributos de la estructura de archivos.







ESTRUCTURA DE LA ORGANIZACIÓN SECUENCIAL

Archivo secuencial es la forma más simple de almacenar y recuperar registros de un archivo. En un archivo secuencial, se almacenan los registros uno tras otro. El primer registro almacenado se coloca al principio del archivo. El segundo se almacena inmediatamente después (no existen posiciones sin uso), el tercero después del segundo, etc. Este orden nunca cambia en la organización secuencial.

Una característica de los archivos secuenciales es que todos los registros se almacenan por posición: de primer registro, segundo registro etc.

Ventajas y desventajas. 

Ventajas: 

Los archivos secuenciales proveen la mejor utilización de espacio y son rápidos cuando los registros son accesados secuencialmente.

Los archivos con poca volatilidad, gran actividad y tamaño variable son altamente susceptibles de ser organizados secuencialmente.

La ventaja más importante de la técnica de organización secuencial de archivos es la capacidad de acceso al "siguiente" registro rápidamente: Mientras que el patrón de acceso a un archivo secuencial se conforme al ordenamiento de registros en el archivo, los tiempos de acceso serán muy buenos. Sin embargo, si el patrón de acceso al programa no se conforma al patrón de ordenamiento de los registros, entonces la eficiencia del programa puede ser terrible.

Otra ventaja de los archivos de organización secuencial es que son muy sencillos de usar y aplicar.

Desventajas: 

El acceso a un registro es pobre, la localización de un determinado registro no se puede hacer individualmente no de manera rápida, y el acceso aleatorio es impráctico.

Además, en los archivos secuenciales la dirección de registro está implícita y están vulnerables a fallas del sistema.



 ESCRITURA DE LOS ARCHIVOS SECUENCIALES:

En estos archivos, la información sólo puede leerse y escribirse empezando desde el principio del archivo.

Los archivos secuenciales tienen algunas características que hay que tener en cuenta:

1. La escritura de nuevos datos siempre se hace al final del archivo.
2. Para leer un dato concreto del archivo hay que avanzar siempre hasta donde se encuentre dicho dato. Si el dato requerido se encuentra antes del dato en que está se está posicionado el archivo en un momento dado, será necesario regresar al comienzo del archivo y avanzar hasta el dato necesario.

Almacenamiento de archivos Secuenciales.

Los archivos secuenciales pueden almacenarse en dispositivos de acceso serial o directo. Con frecuencia los dispositivos de acceso serial son considerablemente menos caros que los dispositivos de acceso directo en un sistema de cómputo, pero de hecho, los dispositivos de almacenamiento de acceso directo en una computadora siempre proporcionan mayor capacidad de almacenamiento y acceso más rápido que los dispositivos de acceso serial.


 OPERACIÓN SOBRE ARCHIVOS SECUENCIALES.


El formato de las instrucciones que nos permiten manejar los datos contenidos en un fichero con organización secuencial dependerá del lenguaje de programación con el que trabajemos. De forma general podemos resumir las instrucciones empleadas en el manejo de este tipo de ficheros en las siguientes:



Abrir (OPEN) Abrir un fichero para poder trabajar con sus registros. Se puede abrir de tres formas:

INPUT (I) ‑ Sólo para leer registros.

OUTPUT (0) ‑ Sólo para escribir registros.

INPUT‑OUPUT (I‑O) ‑ Para leer y escribir.

EXTEND (E) ‑ Para añadir registros al final del fichero

Cerrar (CLOSE) Cerrar el fichero, cuando ya no se va trabajar mas con sus registros.

Leer (READ) Pasar la información de un registro a la memoria principal del ordenador para que el programa pueda trabajar con los datos que contiene. Cada vez que se da una orden de leer se lee el siguiente registro.

Escribir (WRITE) Graba en el soporte la información de un registro con la información que tenga en la memoria principal.

Reescribir (REWRITE) Graba sobre un registro que ya existe en el fichero. Antes de utilizar esta instrucción se tiene que leer antes el registro que se va a reescribir con una orden de leer 

(READ).Para poder utilizar los datos del fichero el sistema operativo utiliza un indicador, o puntero, que se coloca señalando al primer registro de datos del fichero, cuando se da la orden de Abrir (OPEN), y se va desplazando, siempre en la misma dirección, cada vez que se lee o graba un registro. La estructura del fichero se completa con un registro de cabecera que contiene información acerca del fichero y un registro que sirve de marca de final de fichero, o EOF (EOF ‑ End Of File), que el sistema utiliza para saber cual es el último registro del fichero. El registro de final de fichero (E.O.F.) se graba, por primera vez en el momento de la creación del fichero y se va desplazando cuando se añaden nuevos registros al final del mismo.

 Actualización en archivos secuenciales. 

Un archivo maestro representa el punto estático de algún aspecto de alguna organización en un tiempo dado. Los cambios en la organización se reflejan en el archivo maestro, y para llevar a cabo la actualización del archivo maestro se tendrán que realizar los tipos de actualización:
  • Insertar un nuevo registro.
  • Borrar un registro.
  • Modificar un registro.
Al estar usando un archivo secuencial como archivo maestro, el realizar las operaciones de actualización se llevara con el auxilio de un archivo de transacciones, debido a que se realizará el proceso en lote para que sea más eficiente.

 Creación de archivos secuenciales.
La creación de un archivo secuencial se realiza agregando registros al final del archivo, no importa el medio de entrada de datos. El archivo secuencial puede ser almacenado en cintas o en discos magnéticos. Un archivo secuencial puede tener registros fijos o variables, la declaración del archivo y la definición del registro dependerá del lenguaje de programación que se vaya a usar.

 Clasificación de los archivos secuenciales.
Normalmente el uso de los archivos secuenciales se da en procesos en lote, donde se ha hecho notar que son eficientes cuando se llevan a cabo diversas operaciones sobre una gran cantidad de registros o de todo el archivo. Esta eficiencia se logra con una acción: la clasificación, proceso que no es exclusivo de los archivos secuenciales, pero si necesaria para diversas operaciones.
La clasificación es el proceso de examinar los registros en un archivo y ponerlos en una secuencia ascendente o descendente basada en el valor de uno o más campos del registro.


 Recuperación de archivos secuenciales.

Como se menciono anteriormente la recuperación de información de los archivos se da como consulta (modo interactivo) o como la generación de reporte (modo lote). También se indico la desventaja de acceder a un solo registro de un archivo secuencial.

Es ineficiente el uso de estos archivos para realizar la consulta de un registro, pero es optimo su uso para la generación de un reporte de secuencia lógica en que se encuentra el archivo, el reporte podrá ser de varios tipos:
  • Selectivo.
  • Resumen y sumarizacion.
  • Clasificado por uno o más campos.

Consideraciones de los archivos secuenciales.
El uso más común para archivo secuenciales es para el procesamiento de lotes, tales como respaldo de datos, generación de reportes, transmisión física de datos, etc., archivo de nomina.
Ventajas: los archivos secuenciales proveen la mejor utilización de espacio y son rápidos cuando los registros son accesados secuencialmente.
Los archivos con poca volatilidad, gran actividad y tamaño variables son altamente susceptibles de ser organizados secuencialmente.
Desventajas el acceso a un registro es pobre, la localización de un determinado registro no se puede hacer individualmente ni rápidamente, el acceso aleatorio es impráctico.
El archivo a causa de inserciones y supresiones, tiene que ser reescrito periódicamente.

mas información http://programacionfacil.com/

jueves, 21 de febrero de 2013

conceptos basicos de archivos


Unidad 1 Conceptos básicos de archivos

Archivo informático
Un archivo o fichero informático es una entidad lógica compuesta por una secuencia finita de bytes, almacenada en un sistema de archivos ubicada en la memoria secundaria de un ordenador. Los archivos son agrupados en directorios dentro del sistema de archivos y son identificados por un nombre de archivo. El nombre forma la identificación única en relación a los otros archivos en el mismo directorio.
Los archivos se utilizan cuando se desea almacenar datos de manera persistente, o para guardarlos en memoria secundaria con el fin de no utilizar memoria primaria, dado que esta última es normalmente más escasa que la anterior.
Dependiendo de cada sistema de archivos, los ficheros pueden tener atributos particulares como, por ejemplo, fecha de creación, fecha de última modificación, dueño y permisos de acceso. 

El tamaño de un archivo está limitado por una serie de factores, como la capacidad disponible en la memoria secundaria del ordenador y los límites impuestos por el sistema operativo o el sistema de archivos.
El tipo de un archivo es caracterizado por la organización de los datos contenidos y la interpretación que realiza el software que los escribe o los lee. 




En computación existen básicamente dos tipos de archivos, los archivos ascii y los archivos binarios. El vocablo ascii es un acrónimo para American Standard Code for Information Interchange. Es un estándar que asigna un valor numérico a cada carácter, con lo que se pueden representar los documentos llamados de Texto Plano, es decir, los que son legibles por seres humanos. Los archivos binarios son todos los demás. Como ejemplos tenemos:
Archivos binarios:
  • De imagen: .jpg, .gif, .tiff, .bmp (Portable bitmap), .wmf (Windows Meta File), .png (Portable Network Graphics), .pcx (Paintbrush); entre muchos otros
     •De video: .mpg, .mov, .avi, .gif •Comprimidos o empaquetados: .zip, .Z, .gz, .tar, .lhz •Ejecutables o compilados: .exe, .com, .cgi, .o, .a •Procesadores de palabras: .doc 



 
Los archivos y carpetas se organizan jerárquicamente En los sistemas informáticos modernos, los archivos siempre tienen nombres. Los archivos se ubican en directorios. El nombre de un archivo debe ser único en ese directorio. En otras palabras, no puede haber dos archivos con el mismo nombre en el mismo directorio. El nombre de un archivo y la ruta al directorio del archivo lo identifica de manera exacta entre todos los demás archivos del sistema informático-no puede haber dos archivos con el mismo nombre y ruta. La mayoría de las computadoras organizan los archivos en jerarquías llamadas carpetas, directorios o catálogos. (El concepto es el mismo independientemente de la terminología usada.) Cuando una computadora permite el uso de carpetas, cada archivo y carpeta no sólo tiene un nombre propio, sino también una ruta, que identifica la carpeta o carpetas en las que reside un archivo o carpeta. En la ruta, se emplea algún tipo de carácter especial -como un barra- para separar los nombres de los archivos y carpetas. Muchos (pero no todos) sistemas informáticos usan extensiones en los nombres de archivo para ayudar a identificar que contienen. 
La Organización de un Archivo es la colección de registros lógicos en el archivo y la percepción que tiene el usuario programador de aplicaciones acerca de la disposición lógica de los registros almacenados en el archivo; una organización de archivo soporta algún(os) método de acceso mediante el cual estos registros pueden ser accedidos.
A continuación se presentan algunas organizaciones de archivo.

  1. Organización Secuencial
El término organización secuencial implica que lógicamente los registros del archivo están almacenados consecutivamente; esto es, en forma adyacente, en el orden en que el usuario final los percibe. En particular se puede hacer una distinción entre archivos secuenciales ordenados y archivos secuenciales desordenados. Una organización de archivo secuencial ordenada almacena los registros lógicos secuencialmente pero en orden creciente (o decreciente) de acuerdo con los valores de alguna de sus claves, mientras que la organización de archivo secuencial no ordenada almacena los registros lógicos consecutivamente pero sin un orden específico.
La organización secuencial es la organización de archivo más común. Los registros son almacenados uno tras otro en orden de llegada. Para acceder un registro determinado se deben leer todos los registros que están almacenados antes de éste. Cuando el orden secuencial coincide con el orden físico se dice que existe un orden serial (en una cinta magnética siempre se cumple esta característica).
Operaciones:
  • La operación de inserción de un registro en un archivo organizado secuencialmente puede ser realizada de dos maneras:
  • Crear un nuevo archivo. Es costoso (en términos de número de transferencias de datos entre memoria principal y secundaria), pero puede la única forma posible en caso de que el archivo se encuentre organizado secuencialmente ordenado.
  • Agregarlo al final. De bajo costo. Puede NO ser útil en el caso de que el archivo encuentre organizado secuencialmente ordenado.
  • La operación de eliminación puede ser realizada de dos maneras:
  • Creando un nuevo archivo secuencial que no contenga el registro eliminado. Es de alto costo.
  • Marcar el registro en cuestión, es decir, realizar una eliminación lógica. Normalmente esta operación no es posible de realizar en dispositivos de acceso secuencial como las cintas magnéticas.

A nivel físico, los bloques están almacenados "consecutivamente" ya sea:
  • Almacenados de tal forma que ellos están físicamente adyacentes y por lo tanto residen en la misma sola extensión (archivo secuencial físico); o
  • Almacenados de tal forma que pertenezcan a grupos (clusters) diferentes y, por lo tanto, pertenezcan a más de una extensión, con su adyacencia lógica mantenida vía punteros de disco. (archivo secuencial enlazado físico)
Debido a que las operaciones que modifican el estado del archivo secuencial (sobre todo eliminación y modificación ) son costosas (en términos de tiempo de respuesta), la mayoría de las veces se postergan hasta que se hayan acumulado un cierto número de este tipo de operaciones, en un archivo especial llamado archivo de transacciones (el cuál en sí mismo puede ser un archivo organizado secuencialmente). Llegado un momento, todas las operaciones pendientes (almacenadas en el archivo de transacciones) son aplicadas "juntas", generando un nuevo archivo.
Por todo lo anterior, se tiene que los archivos de organización secuencial se desempeñan bien para operaciones Batch (recuperar muchos registros) y Recuperar_Todos (recuperar todos los registros), y normalmente requieren de un espacio de almacenamiento bastante pequeño (por ejemplo, no necesitan de estructuras auxiliares como ocurre en los archivos ordenados de forma secuencial indexada).
Como desventaja se tiene que no existe una manera rápida de acceder a un registro lógico específico (en contraste, por ejemplo, con lo que sucede en los archivos relativos y en los archivos indexados, en dónde es posible acceder a un registro determinado en pocos accesos).
Un archivo almacenado en una cinta magnética está siempre organizado secuencialmente.
En un disco duro, la organización secuencial puede ser lograda mediante una capa de "abstracción" de software; sin embargo, un archivo organizado en forma secuencial desaprovecha las características de acceso directo que proporciona el disco duro.

  •   Segun su acceso 

    Existen dos maneras de accesar  y buscar registros de una archivo:
    Secuencial
  • Características
    • Consecutivamente
    • Respetando el orden de aparición en el archivo
    • El orden de complejidad será O(n) lo cual implica que es demasiado lento para grandes volúmenes de datos, O(n/2) en promedio.
  • Se utiliza cuando:
    • Se está buscando en un archivo de texto algun patrón (pattern)
    • Archivos con pocos registros
    • Archivos que no necesitan "búsquedas" por ejemplo los respaldos en cintas
    • Cuando de antemano se sabe que se recuperarán muchos resultados (vale la pena la espera)
Existe una técnica que permite aumentar la velocidad de estos accesos llamada "Blocking"
Se basa en leer bloques de registros en lugar de leer uno por uno
El leer un bloque es más lento porque se traen en cada viaje al disco más datos, pero nuevamente la separación se hace en memoria donde la velocidad es mucho mayor y ahí se gana tiempo.
Aunque el rendimiento mejora considerablemente en realidad no es algo considerable ya que el número de las comparaciones para buscar el patrón o valor que se requiere sigue siendo el mismo.
Directo
  • Caraterísticas
    • El orden de complejidad será  O(1)
    • Se basa en las funciones de seek
    • Para obtener un buen rendimiento se deben hacer los registros de una longitud cuyo múltiplo sea del tamaño de un sector del disco. Si el sector es de 512 bytes y nuestro registro mide 30, lo mas adecuado es que mida 32, ya que 32x16=512 (16 registros en un viaje al disco)
  • Se utiliza cuando:
    • Los registros son de longitud fija
    • Tenemos una manera de saber en que posición del archivo está un registro,
      ej. campo id=número del registro en el archivo

Reutilizando el espacio en Archivos

Qué sucede si eliminamos un registro ??
  • Necesitamos recorrer los demás para mantener consistente el archivo
    • Esta suena bastante bien, pero tiene la desventaja de perder mucho tiempo en realizar esta operación
  • Dejar el espacio (hueco) y reutilizarlo posteriormente
    • El problema aqui es el desperdicio de espacio, pero si tomamos en cuenta que se reutiliza entonces no habrá mucho problema.
De manera que tenemos 3 operaciones que modifican la organización de nuestro archivo:
  • Agregar Registros
  • Actualizar Registros
  • Eliminar Registros

Si el archivo que se pretende utilizar sólo se utiliza para guardar información (agregar) entonces no hay mayor complejidad en su manipulación; se vuelve más interesante cuando hablamos de actualización y eliminación tanto en archivos de registros de tamaño fijo, como aquellos con registros de tamaño variable.
Algo importante que debemos recordar es que se puede ver a la actualización como un "borrar y agregar" así que nos concentraremos primeramente en la eliminación de registros.
 
Las operaciones generales que se realizan son:
Creación. Escritura de todos sus registros.
Es la primera operación que sufrirá el archivo de datos. Implica la elección de un entorno descriptivo que permita un ágil, rápido y eficaz tratamiento del archivo.
Para utilizar un archivo, éste tiene que existir, es decir, las informaciones de este archivo tienen que haber sido almacenadas sobre un soporte y ser utilizables. La crea¬ción exige organización, estructura, localización o reserva de espacio en el soporte de almacenamiento, transferencia del archivo del soporte antiguo al nuevo.
Un archivo puede ser creado por primera vez en un soporte, proceder de otro previamente existente en el mismo o diferente soporte, ser el resultado de un cálculo o ambas cosas a la vez.
Consulta. Lectura de todos sus registros.
Es la operación que permite al usuario acceder al archivo de datos para conocer el contenido de uno, varios o todos los registros.
Actualización. Inserción supresión o modificación de algunos de sus registros.
Es la operación que permite tener actualizado (puesto al día) el archivo, de tal modo que sea posible realizar las siguientes operaciones con sus registros: •Consulta del contenido de un registro. •Inserción de un registro nuevo en el archivo. •Supresión de un registro existente. •Modificación de un registro.
Un ejemplo de actualización es el de un archivo de un almacén, cuyos registros con¬I tienen las existencias de cada artículo, precios, proveedores, etc. Las existencias, pre¬cios, etc., varían continuamente y exigen una actualización simultánea del archivo con cada operación de consulta.
Clasificación. Reubicación de los registros de tal forma que queden ordenados según determinados criterios.
Una operación muy importante en un archivo es la clasificación u ordenación (sort, en inglés). Esta clasificación se realizará de acuerdo con el valor de un campo específico, pudiendo ser ascendente (creciente) o descendente (decreciente): alfabética o numérica.
Borrado. Eliminando total del archivo, dejando libre el espacio del soporte que ocupaba.
Es la operación inversa a la creación de un archivo (kill, en inglés). Cuando se destruye (anula o borra) un archivo, éste ya no se puede utilizar y, por consiguiente, no se podrá acceder a ninguno de sus registros.
Reorganización de un archivo. Las operaciones sobre archivos modifican la estructura inicial o la óptima de un archivo. Los índices, enlaces (punteros), zonas de sinónimos, zonas de desbordamiento, etc., se modifican con el paso del tiempo, lo que hace a la operación de acceso al registro cada vez más lenta. La reorganización suele consistir en la copia de un nuevo archivo a partir del archivo modificado, a fin de obtener una nueva estructura lo más óptima posible.