MACHALA-2014 INTRODUCCION Las Estructuras de Datos son una coleccin de datos cuya organizacin se caracteriza por las funciones de acceso que se usan para almacenar y acceder a elementos individuales de datos. CLASIFICACION DE LOS TIPOS DE DATOS Dinmicos Estticos Cadenas Estructurados Simples Ordinales No-ordinales TIPOS ESTRUCTURADOS Mientras que una variable de un tipo simple slo referencia a un elemento, los estructurados se refieren a colecciones de elementos. Las colecciones de elementos que aparecen al hablar de tipos estructurados son muy variadas: tenemos colecciones ordenadas que se representan mediante el tipo array (arreglos), colecciones sin orden mediante el tipo conjunto, e incluso colecciones que contienen otros tipos, son los llamados registros. ARREGLOS Un arreglo puede definirse como un grupo o una coleccin finita, homognea y ordenada de elementos.
TIPOS: De una dimensin (unidimensional o vectores) De dos dimensiones (bidimensionales o matrices) De tres o ms dimensiones ARREGLOS UNIDIMENSIONALES Un arreglo unidimensional es un tipo de datos estructurado que esta formado por una coleccin finita y ordenada de datos del mismo tipo.
Tipo de Acceso: Acceso directo, es decir se puede acceder a cualquier elemento del arreglo sin tener que consultar a elementos anteriores o posteriores. ARREGLOS BIDIMENSIONALES Al igual que los anteriores es un tipo de datos estructurado, finito, ordenado y homogneo, que se usa para representar datos que pueden verse como una tabla con filas y columnas. Tipo de Acceso: Acceso directo, por medio de un par de ndices. ARREGLOS EN JAVA Declaracin tipo_dedato nom_variable []; tipo_dedato [] nombre_variable; Ejemplo double array2[]; Definir tamao de arreglos: arreglo = new tipo_dedato[capacidad]; Ejemplo array = new String[10]; ARREGLOS EN JAVA Declaracin y asignacin en una sola lnea
String array[] = new String[10]; //se declara un arreglo y se asigna su tamao en una misma lnea ARREGLOS EN JAVA Asignacin de valores a elementos del array
System.out.println("El valor de la primera posicion del arreglo es" + array[0]);
3 6 8 1 0 4 2 0 1 2 3 4 5 6 Ejemplo de un arreglo que contiene 7 nmeros enteros ndices Elementos del arreglo Elemento que ocupa la posicin 3 en el arreglo Creacin: int[ ] myArray; // o tambin int myArray[ ]; Cuando se declara una variable arreglo, sta no tiene ningn valor. Antes de asignar cualquier valor, se debe reservar un espacio en memoria, utilizando el operador new y asignarlo a la variable. Declaracin: nombreArreglo = new tipoDato[tamao]; miVector = new int[7]; Continuando con el ejemplo anterior Al reservar espacio para los elementos de un vector, mediante new, se inicializa automticamente en cero su contenido. Cuando se ejecuta esta sentencia de creacin , la varianle miVector, har referencia a un vector de 7 elementos enteros. Creacin: myArray = new int[7]; New: operador especial que reserva espacio en memoria Arreglos Utilizacin: nombreArreglo [ndice] Para acceder a un elemento de un arreglo, se coloca el nombre del arreglo y entre corchetes el ndice del elemento que se desea. 3 6 8 1 0 4 2 0 1 2 3 4 5 6 Por ejemplo, si se desea obtener el nmero 4 del siguiente vector: myArray [5] Los ndices en un arreglo, van desde 0 hasta el tamao 1. El tamao de un arreglo se obtiene con el mtodo length, con la siguiente sintaxis: Utilizacin: nombreArreglo.length En nuestro ejemplo: myArray.length Arreglos EJEMPLOS 1) Se desea guardar los sueldos de 5 operarios.
import java.util.Scanner; public class PruebaVector1 { public static void main(String[] args) { Scanner teclado; teclado=new Scanner(System.in); int[] sueldos=new int[5]; for(int i=0;i<5;i++) { System.out.print("Ingrese valor del sueldo:"); sueldos[i]=teclado.nextInt(); } for(int f=0;f<5;f++) { System.out.println(sueldos[f]); } } } EJEMPLO Se tienen las notas de 5 exmenes de 10 alumnos, y se desea promediar la nota final de cada uno de ellos. Disee una aplicacin que solucione este problema.
EJERCICIOS Escribe el cdigo en Java del siguiente mtodo
a) El mtodo public void inicia1 (int n )
que declara un arreglo de enteros y le asigna a cada localidad los valores 0,3,6,..,3*n donde n es la longitud del arreglo.
Por ejemplo, si se define el siguiente arreglo:
int A[ ]; A= new int[6];
Y despus se ejecuta la instruccin... Int n=10; inicia1( n);
...las localidades de A deben ser A[0]=0, A[1]=3, A[2]=6, A[3]=9, A[4]=12 y A[5]=15...
Matrices 0 1 2 3 4 5 0
1
2
3
4
5 (matriz 2 3) (matriz 4 0) Arreglos Bidimensionales o Matrices Un arreglo Bidimensional es un conjunto de datos homogneos, finito y ordenado, donde se hace referencia a cada elemento por medio de dos ndices. El primero de los ndices se utiliza generalmente para indicar la fila, y el segundo para indicar columna. Declaracin. tipoDato nombreMatriz[ ][ ]; Para declarar una matriz de nmeros enteros, llamada miMatriz, se puede hacer de la siguiente manera: int miMatriz[ ][ ]; Matrices Creacin: nombreMatriz = new tipoDato[filas][columnas]; Para crear una matriz de 2 filas y 3 columnas de nmeros enteros, llamada miMatriz, se escribe miMatriz = new int [2][3]; Matrices int [][] ventas = new int[4][6]; miMatriz = new int [2][3]; Creacin: miMatriz[0][0] miMatriz[0][1] miMatriz[0][2] miMatriz[1][0] miMatriz[1][1] miMatriz[1][2] genera Matrices Creacin: miMatriz = new int [2][3]; Primero crea un vector de 2 elementos Elemento 0 Elemento 1 Matrices Creacin: miMatriz = new int [2][3]; Luego cada elemento lo transforma en un vector de 3 elementos miMatriz[0][0] miMatriz[0][1] miMatriz[0][2] miMatriz[1][0] miMatriz[1][1] miMatriz[1][2] Fila 0 Fila 1 Columna 2 Columna 0 Matrices OPERACIONES CON LOS ARREGLOS
Lectura Escritura Actualizacin Ordenacin Bsqueda OPERACIONES CON LOS ARREGLOS Lectura: Consiste en leer un dato de un arreglo. Escritura: Asignarle un valor a cada elemento del arreglo. Actualizacin: Eliminar, insertar y modificar datos. Se debe tomar en cuenta si el arreglo esta o no ordenado. Ordenacin: Es importante mantenerlos ordenados, existen varios algoritmos para ello. Bsqueda: Sirve para localizar un elemento dentro de un conjunto de datos. EJEMPLOS Programa que lee por teclado nmeros enteros y los guarda en una matriz de 3 filas y 2 columnas. A continuacin muestra la matriz. import java.util.*; public class Bidimensional2 { public static void main(String[] args) { int FILAS = 3, COLUMNAS = 2; Scanner sc = new Scanner(System.in); int i, j; int[][] A = new int[FILAS][COLUMNAS]; System.out.println("Lectura de elementos de la matriz: "); for (i = 0; i < FILAS; i++) { for (j = 0; j < COLUMNAS; j++) { System.out.print("A[" + i + "][" + j + "]= "); A[i][j] = sc.nextInt(); } }
EJEMPLOS Programa que lee por teclado nmeros enteros y los guarda en una matriz de 3 filas y 2 columnas. A continuacin muestra la matriz. System.out.println("valores introducidos:"); for (i = 0; i < FILAS; i++) { for (j = 0; j < COLUMNAS; j++) { System.out.print(A[i][j] + " "); } } } }
EJEMPLOS 2) Sumar la diagonal principal de una matriz 3) Sumar dos matrices 4) Sumar la diagonal secundaria
EJERCICIOS MATRICES Sumar las filas de una matriz y colocar el resultado en un vector.
ALGORITMOS DE ORDENAMIENTO Mtodo de la Burbuja El mtodo de la burbuja es uno de los mas simples, es tan fcil como comparar todos los elementos de una lista contra todos, si se cumple que uno es mayor o menor a otro, entonces los intercambia de posicin. ALGORITMOS DE ORDENAMIENTO Mtodo de la Burbuja
for (i=0; i<LIMITE; i++){ for j=0 ; j<LIMITE - 1; j++) { if (vector[j] > vector[j+1]) { temp = vector[j]; vector[j] = vector[j+1]; vector[j+1] = temp; } } } ALGORITMOS DE ORDENAMIENTO Ejemplos Ingresar en un vector un conjunto de nmeros y ordenarlo de menor a mayor.
BURBUJA OPTIMIZADA A este algoritmo le sumamos, el hecho que los elementos que estn detrs del que se esta comparando, ya estn ordenados, las comparaciones serian aun menos y el mtodo seria aun mas efectivo. BURBUJA OPTIMIZADA for(i = 0; i < vector.length; i++) { for(j = 0; j < i; j++){ if(vector[i] < vector[j]){ aux = vector[j]; vector[j] = vector[i]; vector[i] = aux; } } } ALGORITMOS DE BUSQUEDAD Bsqueda Secuencial o lineal La bsqueda secuencial busca un elemento de una lista utilizando un valor destino llamado clave. En una bsqueda lineal, los elementos de una lista o vector se exploran (se examinan) en secuencia, uno despus de otro. La bsqueda secuencial busca un elemento de una lista utilizando un valor destino llamado clave. Dado que el vector no est en un orden prefijado, es probable que el elemento a buscar pueda ser el primer elemento, el ltimo elemento o cualquier otro EJEMPLOS Ordene un vector de mayor a menor con el mtodo de la burbuja optimizada y realice la prueba de escritorio. Encontrar un nmero dado por el usuario dentro de un vector con el mtodo lineal. Muestre el nmero encontrado. Encontrar un nmero dado por el usuario dentro de una matriz con el mtodo lineal. Muestre la posicin del nmero. Ordene un vector con el mtodo de burbuja optimizada y luego encuentre un nmero dado por el usuario. Muestre el nmero y tambin la posicin del mismo.
BUSQUEDA BINARIA Se utiliza cuando el vector en el que queremos determinar la existencia de un elemento est previamente ordenado. Este algoritmo reduce el tiempo de bsqueda considerablemente, ya que disminuye exponencialmente el nmero de iteraciones necesarias. BUSQUEDA BINARIA
BUSQUEDA BINARIA EJEMPLO Ordene un vector de menor a mayor por el mtodo de burbuja optimizada y luego utilice la bsqueda binaria para encontrar un nmero ingresado por teclado.