Sie sind auf Seite 1von 43

Arreglos

Arreglo Unidimensional (vector)


Para declarar un arreglo
unidimensional en java

0
1
2
.
.
.
.
.
.
.

Int c[ ] = new int [30]


Dias
Del mes (30)
El arreglo va de 0 a
29

Lo anterior indica que c


es una variable de tipo
entero que contendr 30
elementos siendo el
primer elemento c[0] y el
ltimo c[ 29] .

29
El valor contenido entre [ ] se le denomina indice o
subindice del arreglo. El valor puede ser una
constante de tipo entero como pruduccion[0]
Tambien puede ser una variable de tipo entero como
produccion[i]
O bien puede ser una expresin algebraica como
Produccin [i+3], produccin[(i * 4)- j ]

Arreglos
Algoritmo para leer datos de un arreglo unidimensional
Declarar Variables
Produccion: arreglo[30] entero
i:entero
Almacenar los valores de la produccin en cada uno de los elementos del arreglo
for(i=0; i<=29; i++)
Solicitar produccion dia[0] = dia1
Leer produccin[0]
Fin del for
Mostrar en pantalla los valores almacenados en c/u de los 30 dias
for(i=0; i<=29; i++)
Imprime produccin[ i]
Fin del for
Fin de la aplicacin

Arreglos
Arreglos Bidimensionales matriz
Columna 0
4

columna 1 Columna 2 Columna 3 Columna

Renglon 0
Rengln 1
Renglon 2
Rengln 3

Lo anterior es un arreglo de 4 x 5, tiene 4 renglones y 5 columnas. Para calcular el nmero de


elementos de una arreglo bidimencional (matriz), basta con multiplicar el numero de renglon
por el numero de columnas. Para la matriz mostrada se tienen 4 x 5 = 20 elementos.
0,0
1,0
2,0
3,0

0,1
1,1
2,1
3,1

0,2
1,2
2,2
3,2

0,3
1,3
2,3
3,3

0,4
1,4
2,4
3,4

Para declarar un arreglo bidimensional en java:


Int b[ ][ ] = new [ 4 ] [ 5 ]

Arreglos
Es posible inicializar los elemenos de un arreglo de la siguiente forma:
Int arregloProduccion[ ] =

10, 35, 17, 23, 18, 24, 13, 19

Lo anterior muestra un arreglo de 8 elementos, siento arregloProduccion[0]


=10 el primer elemento del arreglo y arregloProduccion[7] el ltimo elemento
del arreglo.
Int arregloMatriz[ ][ ] =
2x4

1,2,3,4

5,6,7,8

Arreglos
Algoritmo para leer datos de un arreglo bidimensional
Leer los numeros enteros de una matriz de 4 x 5
Declarar variables
Numeros: arreglo[4][5] entero
Ren, col: entero
Obtener valores desde el teclado
For ren=0; ren<=3; ren++
For col=0; col<=4; col++
Solicitar numeros [ren] [col]
Almancenar valores en cada elemento del arreglo
Fin del for
Fin del for
Imprimir valores de la matriz en pantalla
For ren=0; ren<=3; ren++
For col=0; col<=4; col++
Imprimir numeros[ren] [col]
Fin for col
Fin for ren
Fin del programa

Ordenacin de listas (Arreglos unidimensional)


La ordenacin de arreglos es otra de las tareas mas usuales en la mayora de los programas.
La ordenacin es el procedimiento en donde se disponen los elementos del array en un
orden especificado, tal como orden alfabtico o numrico.

6
1
2
4
7
18
3
5
14

1
2
3
4
5
6
7
14
18

18
14
7
6
5
4
3
2
1

Diccionario ------> Lista ordenada alfabeticamente


Lista de cuentas de un banco ------> Lista ordenada numricamente
Existen numerosos algoritmos de ordemacin de arrays:
- Insercin
- Rpido
- Shell

- Burbuja
- Fusin

- Seleccin
- Montculo

Estrutura de datos
En programacin, una estructura de datos es una forma de organizar
un conjunto de datos elementales (un dato elemental es la mnima
informacin que se tiene en el sistema) con el objetivo de facilitar la
manipulacin de estos datos como un todo y/o individualmente.
Una estructura de datos define la organizacin e interrelacionamiento
de estos, y un conjunto de operaciones que se pueden realizar sobre
l.
Las operaciones bsicas son:

Alta, adicionar un nuevo valor a la estructura.


Baja, borrar un valor de la estructura.
Bsqueda, encontrar un determinado valor en la estructura para
realizar una operacin con ese valor.

Estrutura de datos
Otras operaciones que se pueden realizar son:

Ordenamiento de los elementos pertenecientes a la estructura.


Apareo, dada dos estructuras originar una nueva ordenada y que
contenga las apareadas.

Cada estructura ofrece ventajas y desventajas en relacin a la


simplicidad y eficiencia para la realizacin de cada operacin.
De esta forma, la eleccin de la estructura de datos apropiada para
cada problema depende de factores como las frecuencias y el orden en
que se realiza cada operacin sobre los datos.
Algunas estructuras de datos utilizadas en programacin son:

Estrutura de datos
Tipos de estructuras:
Arreglos
Vectores
Matrices

rboles
rboles binarios
rboles multicambio

Listas enlazadas
Listas simples
Listas dobles
Listas circulares

Conjuntos

Pilas
Colas

Grafos
Monticulos

Algoritmo de la burbuja
Es uno de los mtodos ms fciles de ordenacin y es muy simple. Se compara cada
elemento del arreglo con el siguiente (por parejas), si no estn en el orden correcto, se
intercambian entre si sus valores.
El valor mas pequeo flota hasta la parte superior del array como si fuera una burbuja
en un vaso de refresco de gas.
Ejemplo de ordacin por burbuja
Lista desordenada: 6 4 10 2 8
6

10

10

10

10

Segunda
Pasada

10

10

Tercera pasada

10

10

Primera Pasada

Algoritmo de la burbuja
Lista desordenada: 25 60 45 35 12 92 85 30
Pasada 0 original

25 60 45 35

12

92

85

30

Pasada 1

25 45 35 12

60

85

30

92

Pasada 2

25 35 12 45

60

30

85

92

Pasada 3

25 12 35 45

30

60

85

92

Pasada 4

12 25 35 30

45

60

85

92

Pasada 5

12 25 30 35

45

60

85

92

Ordenacin por intercambio


Ordena los elementos de una lista de manera ascendente. El algoritmo se basa en la
lectura sucesiva de la lista a ordenar, comparando el elemento inferior de la lista con los
restantes y efectuando intercambio de posiciones cuando el orden resultante de la
comparacin no sea el correcto. Ej. Ordenar 8 4 6 2
Pasada 0
8 4 6 2 Se realiza intercambio

4 8 6

4 8 6 2 No se realiza intercambio

4 8 6

4 8 6 2 Se realiza intercambio

2 8 6

El elemento mas pequeo ya esta localizado en el


indice 0
Pasada 1
2 8 6 4 Se realiza intercambio

2 6 8

2 6 8 4 Se realiza intercambio

2 4 8

2 4 6

Pasada 2
2 4 8 6 Se realiza intercambio

Ordenacin por seleccion


El algoritmo se basa en reordenar los valores del arreglo de modo que el dato contenido
En A[0] sea el valor mas pequeo en la primera pasada, posteriormente el valor A[1] el
siguiente valor mas pequeo y asi sucesivamente hasta A[n-1].
Si A[0] no es el valor mas pequeo, se intercambia con el elemento de la lista que posea
dicho valor. Ejemplo: ordenar por seleccin 51, 21, 39, 80, 36 y luego 11 9 17 5 14
A[0]

A[1]

A[2]

A[3]

A[4]

51

21

39

80

36

Pasada 0 seleccionar 21. Intercambiar 51 y 21

21

51

39

80

36

Pasada 1 seleccionar 36. Intercambiar 51 y 36

21

36

39

80

51

Pasada 2 el 39 es menor ahi queda

21

36

39

80

51

Pasada 3 seleccionar 51. Intercambiar 80 y 51

21

36

39

51

80

Lista ordenada

A[0]

A[1]

A[2]

A[3]

A[4]

11

17

14

Pasada 0 seleccionar 5. Intercambiar 5 y 11

17

11

14

Pasada 1. El 9 es el menor

17

11

14

Pasada 2 11 es el menor. Intercambiar 11 y 17

11

17

14

Pasada 3 14 es menor. Intercambiar 17 y 14

11

14

17

Lista ordenada

Ordenacin por insercion


El proceso de insercin es similar al proceso de ordenar tarjetas de nombres por orden
alfabtico, insertando un nombre en la posicin correcta y reacomodando las tarjetas.
Ejemplo ordenar 50, 20 40, 80 y 30.
A[0]

A[1]

A[2]

A[3]

A[4]

50

Se empieza con 50 a[0]

20

50

Se inserta 20, por lo que al ser menor 50 pasa a A[1]

20

40

50

20

40

50

80

20

30

40

50

80

A[0]

A[1]

A[2]

A[3]

A[4]

Se inserta 40, por lo 50 pasa a A[2] y 40 a A[1]


Se inserta 80, por lo que al ser el mayor pasa a A[3]
Se inserta 30, por lo que se inserta en A[1] y los
demas elementos de la derecha se recorren un lugar

Metodo de Busqueda
Secuencial o Lineal y binaria

Arreglos Dinamicos
Un incoveniente de los arreglos unidimensionales es que tienen un tamao fijo y no es posible
agregar elementos al vector. Para poder hacer lo anterior se hace uso de la clase ArrayList.
La clase ArrayList (java.util) es una objeto que acta como una lista que implemente la
interfaz Collection de java. Esta clase permite contener y ordenar objetos, incluso, puede
almacenar objetos duplicados. Su tamao es dinmico, es decir, esta lista crecer a medida
que se inserten en ella mas elementos. Debememos recordar que el ndice de un ArrayList
empieza en 0 (cero), es decir, el primer elemento del ArrayList tiene como ndice el 0.

Listas Enlazadas

La Lista Enlazada Simple es la ms fundamental estructura de datos


basada en punteros, y del concepto fundamental de sta derivan las
otras estructuras de datos.
Para solucionar un problema como el presentado anteriormente,
necesitamos una estructura que, al contrario de los arreglos, sea
capaz de modificar su capacidad, es decir, que maneje los datos de
forma dinmica. Para lograr esto, nace la idea de lista enlazada.
Un arreglo asigna memoria para todos sus elementos ordenados
como un slo bloque. En cambio, la lista enlazada asigna espacio
para cada elemento por separado, en su propio bloque de memoria,
llamado nodo. La lista conecta estos nodos usando punteros,
formando una estructura parecida a la de una cadena.

Qu es un nodo

Un nodo es un objeto como cualquier otro, y sus atributos sern los


encargados de hacer eltrabajo de almacenar y apuntar a otro nodo.
Cada nodo tiene dos atributos: un atributo contenido, usado para
almacenar un objeto; y otro atributo siguiente, usado para
hacer referencia al siguiente nodo de la lista.
Los nodos sern representados por los siguientes smbolos.

Qu es un nodo

La parte frontal de la lista es representada por un puntero al primer


nodo. Es decir, un atributo de la lista enlazada es un nodo primero.

Y podramos representar a una lista enlazada que almacena ints por


medio del siguiente diagrama:

Cmo acceder a un elemento de la lista


Para tener acceso a un elemento de la lista, hay que hacer uso de los
punteros. Se crea un puntero al primer nodo de la lista y se avanza
por medio del atributo siguiente.
Por ejemplo, imaginemos que tenemos una lista enlazada llamada
lista, que tiene almacenado nombres de personas por medio de
Strings. Si quisiramos tener acceso al cuarto nombre almacenado,
tendramos que:
1- Crear un puntero al primero de la lista
2- Avanzar con el puntero hasta el cuarto nodo
3- Utilizar el contenido del nodo

Cmo acceder a un elemento de la lista

Metodo aadir
Para aadir un nodo a la lista, primero creamos un nodo, al que
llamaremos nuevoNodo, que contenga al Cliente entregado por el
nuevoCliente.v
argumento, al que llamaremos nuevoCliente.

Luego conectamos a nuevoNodo con el ltimo nodo de la lista. Para


referirnos a ste,creamos un puntero, al que llamaremos puntero, al
primer nodo y avanzamos hasta el ltimo por medio de la instruccin
puntero = puntero.siguiente como fue explicado anteriormente.

Metodo aadir

Ahora que puntero apunta al ltimo nodo de la lista, y, adems,


ahora puntero.siguiente tiene un valor igual a null, haremos que
puntero.siguiente tome el valor nuevoNodo, es decir,
puntero.siguiente = nuevoNodo . Grficamente:

Metodo aadir

Metodo buscar
Para encontrar un Cliente en la lista, debemos buscarlo por medio de
su atributo nico: el RUT. Es decir, crearemos un puntero puntero con
el que recorreremos la lista, comparando el RUT especificado con el
RUT de cada Client, hasta encontrar una coincidencia.
Grficamente:

Metodo remover
Para eliminar un nodo de la lista, primero debemos ubicar el nodo
anterior ste, es decir, puntero.siguiente ser el nodo a eliminar.
Ahora, simplemente dejamos sin puntero al nodo diciendo:
puntero.siguiente = puntero.siguiente.siguiente, para que el
Recolector de Basura de Java lo recoja y sea eliminado.
Grficamente:

Metodo remover

Pilas
Que es una pila
La Pila o Stack es una estructura de datos muy simple. Imagina que
tienes una pistola de juguete que dispara pelotas, y, para cargarla,
tienes que introducir las pelotas una a una por la parte frontal del
can de la pistola, una tras otra. La primera pelota que disparars
ser la ltima que introdujiste, y la ltima que disparars ser la
primera que introdujiste. Eso es una pila.

Pilas

Pilas
Otro ejemplo muy comn es la pila de platos que formas para
lavarlos: el ltimo plato que apilaste ser el primero que lavars.
La pila es una estructura que se basa en el concepto LIFO: Last In
First Out, es decir, el ltimo elemento que entra es el primero que
sale.
La implementacin de una pila es muy parecida a la de lista enlazada,
y slo difiere en la forma que gestionamos los elementos
almacenados.

Pilas
Mtodos
VerPrimero: La idea del mtodo verPrimero() es, simplemente, decirnos
quin es el objeto que est al principio de la pila, es decir, el ltimo objeto
ingresado y, potencialmente, el primero a eliminar. Para tener acceso a este
objeto, hacemos uso del atributo primeroDeLaPila, que no es ms que un
puntero al primer nodo de la pila. As que este mtodo slo retorna el
contenido de primeroDeLaPila, es decir, primeroDeLaPila.contenido.

Sacar: El objetivo de este mtodo es eliminar el nodo ms externo, es decir,


el ltimo ingresado.Para esto, simplemente hacemos que primeroDeLaPila
apunte a su sucesor, es decir primeroDeLaPila = primeroDeLaPila.siguiente.

Pilas
Grficamente mtodo sacar :

Pilas
Mtodo apilar: Este mtodo es el encargado de aadir nodos a la pila. Para
esto, es necesario que el nodo sea aadido al principio de la pila.
Grficamente:

Pilas
Otra forma de visualizar apilar y sacar :

Colas
Qu es una cola
La Cola o Queue es otra de las estructuras de datos que revisaremos en
este apunte. Como las pilas, las colas son muy simples de entender e
implementar.
La idea de la cola es simular el funcionamiento de una cola de la vida real,
por ejemplo, la cola de un banco. Imagina que tienes una pistola de juguete
parecida a la del ejemplo de pila, pero ahora, para cargarla, debes introducir
las pelotas por la parte trasera del can. Eso es una Cola.
La cola es una estructura que se basa en el concepto FIFO: First In First
Out, es decir, el primer elemento que entra es el primero que sale.
Tal como las pilas, la implementacin de la pila es muy parecida a la de lista
enlazada, y slo difiere en la forma que gestionamos los elementos
almacenados. En una cola, crearemos mtodos que cumplan las funciones
expuestas anteriormente y aclaradas con la Figura de la siguiente
diapositiva, es decir, un mtodo que agregue un nodo al principio de la cola
y otro que elimine el ltimo nodo de sta.

Colas

Colas
Mtodos:
Enfilar:Este mtodo tiene como objetivo poner en la fila al objeto entregado
en el argumento, al que llamaremos nuevoObjeto. Para hacer esto, se
debe agregar a la cola un nodo, al que llamaremos nuevoNodo, que
contenga a nuevoObjeto. Es decir ultimoEnLaCola.siguiente debe apuntar
a nuevoNodo, y luego ultimoEnLaCola debe apuntar a nuevoNodo.
Vemoslo grficamente:

Colas
Mtodos:
Sacar: Este mtodo es el encargado de atender al primero de la fila, es
decir, de eliminarlo de la cola y retornarlo. Para sto, simplemente basta
hacer que primeroEnLaCola apunte a su sucesor, o sea, primeroEnLaCola
= primeroEnLaCola.siguiente.
Vemoslo grficamente:

Colas
Mtodos:
Otra forma de visualizar los mtodos enfilar y sacar

Listas
Listas simples o sencillas.
Lista enlazada de nodos, donde cada nodo tiene un nico campo de
enlace.
Una variable de referencia contiene una referencia al primer nodo, cada
nodo (excepto el ltimo) enlaza con el nodo siguiente, y el enlace del ltimo
nodo contiene null para indicar el final de la lista.

Listas
Listas dobles
Una lista doblemente enlazada es una lista enlazada de nodos, donde
cada nodo tiene un par de campos de enlace. Un campo de enlace permite
atravesar la lista hacia adelante, mientras que el otro permite atravesar la
lista haca atrs.
Cada nodo se enlaza con el siguiente mediante el campo de enlace next,
excepto el ltimo nodo, cuyo campo de enlace next contiene null para
indicar el final de la lista (en direccion hacia adelante). De forma similar,
para la direccin contraria, una variable de referencia contiene una
referencia al ltimo nodo de la direccin normal (hacia adelante), lo que se
interpreta como el primer nodo.

Listas
Listas dobles

Listas
Listas Circulares
El campo de enlace del ltimo nodo de una lista de enlace simple contiene
un enlace nulo, ocurre lo mismo en los campos de enlace del primer y
ltimo elemento en ambas direcciones en las listas doblemente enlazadas.
Supongamos que en vez de esto los ltimos nodos contiene un enlace a
los primeros nodos.

Das könnte Ihnen auch gefallen