Estructuras de Datos

Una estructura de datos es un colección de datos que se caracterizan por su forma de organización y las operaciones que se pueden definir de dicha estructura.
Nosotros ya estamos familiarizados con los datos simples, como enteros (int), caracteres (char), etc. Una estructura de datos es una colección de datos simples, como por ejemplo un vector o arreglo.
La clasificación de las estructuras de datos se la puede hacer de la siguiente forma:


Arreglo

Un arreglo es un conjunto o colección finita de datos de un mismo tipo. Los elementos de un arreglo pueden ser accedidos por medio de un subíndice i.

Podemos considerar a un arreglo desde el punto de vista matemático como un vector, y a un arreglo bidimensional una matriz.

Declaración de un arreglo

Un arreglo se define indicando el tipo de arreglo, es decir, el tipo de datos de todos los elementos del arreglo, luego se le da un nombre al arreglo y finalmente se le da un tamaño.

<tipo> nombreArreglo[Tamamaño]

Por ejemplo tengo un arreglo de números enteros:

int arreglo[4];

En el caso anterior el tipo del arreglo es entero (int).
Se le da una dimensión al arreglo que va entre los caracteres '[' y ']' , en el caso anterior la dimensión es 4, esto quiere decir que en la memoria se reservaron 4 posiciones para almacenar 4 valores enteros.

Inicializar un Arreglo

Existen varias maneras de inicializar un arreglo, una manera muy sencilla es poner entre llaves ({ }),  los elementos del arreglo separados por comas.

arreglo = {51, 60, 70, 95};

También podemos utilizar la estructura de control for para inicializar los elementos del arreglo como se ve en el Ejemplo 7.1

Acceso a los elementos de un Arreglo

Puedo acceder a un elemento por medio de un subíndice, por ejemplo si yo quiero acceder al primer elemento tendré que hacerlo de esta manera
    int nro = arreglo[0];
En la variable nro se almacenara el valor de 51, para acceder al segundo valor:
    nro = arreglo[1];
En la variable nro se almacenará el valor de 60, y así sucesivamente con los demás elementos.

arreglo[0]

51

arreglo[1]

60

arreglo[2]

70

arreglo[3]

95

Si nos damos cuenta tener un arreglo es mucho más ventajoso que tener definidas 4 variables.

Desventajas. En ocasiones, no podemos predecir con precisión el tamaño que un arreglo tendrá por lo que podemos definir un arreglo muy grande, lo que nos lleva a desperdiciar memoria, por ejemplo si defino un arreglo de 100 elemento (arreglo[100]), y sólo utilizo 5 posiciones de memoria, las demás 95 estarán desperdiciadas, la solución a este problema la veremos más adelante en lo que se denomina punteros.

Ejemplo 7.1

Se desea ingresar las notas finales de 10 alumnos de la materia de Introducción a la programación, para luego emitir un reporte del promedio de todas las notas.

#include <iostream.h>
void main()
{

const int TAM = 10;
int i, promedio=0;
int arreglo[TAM];
for(i=0; i < TAM ; i++)
{

cout<<"Ingrese la nota del estudiante #"<<i+1<<" :\n";
cin>>arreglo[i];

}

for(i=0; i < TAM ; i++)

promedio = promedio + arreglo[i];

promedio = promedio / TAM ;
cout<<"El promedio de las notas es: "<<promedio;



}

No hubiera sido muy práctico manejar 10 variables diferentes para guardar las notas de los 10 alumnos, utilizando un arreglo se nos simplifican mucho las cosas.

Nota: Se puede declarar un arreglo dándole la dimensión o tamaño por un valor constante

const int TAM=10;
int arreglo[TAM];

si TAM no fuera constante el programa devolvería mensaje de error.

Métodos de Ordenamiento

  1. Ordenación por lección
    Este método es muy sencillo y se trata de buscar el elemento más pequeño del arreglo y llevarlo a la primera posición, luego se avanza a la siguiente posición, segunda, y se coloca el elemento más pequeño del arreglo y así sucesivamente.
  2. Ordenación por Inserción
    Este método es capaz de mantener un arreglo ordenado insertando elementos en su correspondiente posición,  por ejemplo si mi arreglo contiene los valores {1,3,4} y quiero insertar un nuevo elemento 2, el arreglo quedará de esta forma {1,2,3,4}.
  3. Ordenación de Burbuja
    Este es un método de ordenación elemental, que hace todas las comparaciones necesarias para colocar un elemento en la posición que le corresponde. solucion
  4. Ordenación Shell
  5. Ordenación Quicksort

Métodos de Búsqueda

  1. Búsqueda Secuencial

Esta búsqueda realiza un recorrido lineal (uno por uno) por todos los elementos de un arreglo. Es útil cuando el tamaño del arreglo no es grande y no tiene a crecer su número de elementos. solución

  1. Búsqueda Binaria

Dicha búsqueda es aplicable en arreglos ordenados, pues su funcionamiento depende de este hecho.