Introducción a las Estructuras de Datos y Algoritmos.
Antes de explorar las estructuras de datos y sus algoritmos específicos,
necesitamos examinar tres cuestiones básicas: ¿Qué es una estructura de datos?
¿Qué es un algoritmo?
¿Qué es una Estructura de Datos?
Las estructuras de datos nos han estado rodeando
desde la era de la programación estructurada. Una definición de esa era: una
estructura de datos es un conjunto de tipos, un tipo diseñado partiendo de ese
conjunto de tipos, un conjunto de funciones, y un conjunto de axiomas. Esta
definición implica que una estructura de datos es un tipo con implementación.
En nuestra era de la programación orientads a objetos, tipo con
implementación significa clase.
La definición una estructura de datos es una clase es
demasiado amplia porque supone que Empleado, Vehículo, Cuenta, y otras muchas clases específicas
de entidades del mundo real son estructuras de datos. Aunque esas clases
estructuran varios ítems de datos, describen entidades del munto real (en la
forma de objetos) en lugar de describir contenedores de objetos para otras
entidades objetos (y posiblemente otro contenedor). Esta idea de contenido da
una definición más apropiada para una estructura de datos: una
estructura de datos es una clase contenedora que proporciona almacenamiento
para ítems de datos, y capacidades para almacenar y recuperar estos datos.
Algunos ejemplos de estructuras de datos son los arrays, las listas enlazadas,
las pilas y las colas.
¿Qué es un Algoritmo?
Normalmante los algoritmos se asocian con
estructuras de datos. Un algoritmo es una secuencia de
instrucciones que realizan una tarea en un periodo de tiempo finito. El
algoritmo recibe cero o más entradas, produce al menos una salida, consiste en
instrucciones claras y poco ambiguas, termina después de un número finito de
pasos, y es lo suficientemente básico que una persona puede llevar a cabo el
algoritmo utilizando lápiz y papel. Por el contrario, un programa no es
necesariamente finito: el programa, como un servidor Web, podría no terminar
nunca si no hay intervención externa. Algunos ejemplos de algoritmos asociados
con estructuras de datos son: búqueda-lineal, ordenación-de-burbuja, búsqueda-binaria, concatenación-de-listas-enlazadas,
etc.