Está en la página 1de 16

Estructuras de Datos

Arreglos
Arreglo
Un arreglo en Java es un grupo de
posiciones de memoria contiguas, todas las
cuales tienen el mismo nombre y el mismo
tipo.

Un arreglo es un agregado homogéneo ya


que combina un conjunto de datos del
mismo tipo.
Declaración de arreglos
 Los arreglos ocupan espacio en memoria. En
java se usa el operador new para asignar
espacio de almacenamiento al número de
elementos requerido por cada arreglo.
 Un arreglo empieza en 0, es decir, la primer
localidad del arreglo es la localidad 0.
Ejemplo
int a[ ] = new int a[6];
Declaración de arreglos
 Por tanto, si un arreglo tiene n
componentes, la última localidad está dada
por n-1.

n elementos

0 n-1
Arreglos

 Para referirnos a una posición o elemento


en particular del arreglo, especificamos el
nombre del arreglo y el número de posición
de ese elemento en el arreglo. Ejemplo
a[i] = 0; , a[0][3]= 9;

donde i es el índice que


representa la posición dentro
del arreglo donde reside el
componente a accesar.
Arreglos multidimensionales

 Se les llama así a aquellos arreglos que


contienen dos o mas dimensiones.
 Declaración de un arreglo de dos
dimensiones:
 int[][] ar;
 Creación de un arreglo de dos
dimensiones:
 int[][] arr = new int[3][2];
Cómo recorrer un arreglo...

 Los arreglos son recorridos de manera


secuencial.
 Los ciclos for nos sirven para esto.
 Observa el siguiente ejemplo donde el for
nos ayuda a elevar al cuadrado todos los
elementos del arreglo:

int[] arr = {6, 2, 8, 4, 3};


for(int i = 0; i < arr.length; i++) {
arr[i] *= arr[i];
}
Estructuras de Datos

Búsquedas en Arreglos

UdeM otoño 2005


Búsqueda de un elemento
 La búsqueda de un elemento es la
determinación de la localidad de un
elemento con ciertas características.
 Una salida de –1 indicaría que el
elemento no se encontró.
 Métodos de búsqueda
 Búsqueda secuencial
 Búsqueda binaria
Búsqueda secuencial
 El método de búsqueda mediante la fuerza
bruta para recorrer un arreglo, lo hace a
partir de un extremo y comparando cada
elemento buscando una correspondencia.
Este método se llama búsqueda
secuencial.
Búsqueda secuencial
public static int search(int[ ] arr, int valor) {
int i = 0;
while (i < arr.length && arr[i] != valor) {
i++;
}
if(i< arr.length)
return i+1 ;
else
return-1
}
Búsqueda binaria

 Los prerrequisitos principales para la


búsqueda binaria son:
 La lista debe estar ordenada en un orden
especifico de acuerdo al valor de la llave.
 Debe conocerse el número de registros.
Búsqueda binaria
 Pasos
1. Se compara la llave buscada con la llave localizada
al centro del arreglo.
2. Si la llave analizada corresponde a la buscada fin de
búsqueda si no.
3. Si la llave buscada es menor que la analizada
repetir proceso en mitad superior, sino en la mitad
inferior.
4. El proceso de partir por la mitad el arreglo se repite
hasta encontrar el registro o hasta que el tamaño
de la lista restante sea cero , lo cual implica que el
valor de la llave buscada no esta en la lista.
Ejemplo de Búsquedas
Se tiene un arreglo ordenado de 19 casillas.

Si buscamos el número 107. ¿En que posición del arreglo


se encuentra? ¿Cuántas comparaciones se hacen?
Búsqueda Secuencial Búsqueda Binaria
Posición = 16 Posición = 16
Comparaciones = 17 comparaciones = 3

En ¿cuál fue el número menor de comparaciones? ¿Por qué?


Búsqueda secuencial Vs. Búsqueda binaria

 La búsqueda secuencial requiere en promedio del


orden de n comparaciones, mientras que la
búsqueda binaria requiere del orden de log 2n.
 Ciertamente que n es mucho mayor que el número
de veces que podemos partir a n a la mitad.
Debemos recordar que el método de búsqueda
binaria requiere que el arreglo esté ordenado o
clasificado, si no lo está, su uso no es posible.
Búsqueda por Hash
 La idea principal de este método consiste
en aplicar una función que traduce el valor
del elemento buscado en un rango de
direcciones relativas. Una desventaja
importante de este método es que puede
ocasionar colisiones.

También podría gustarte