Está en la página 1de 5

POLITÉCNICO GRAN COLOMBIANO

Facultad de Ingeniería
Materia: Estructura de Datos

Título del trabajo: Escenario 3

Presentado por:
German Darío Rodriguez Pulido

Bogotá D.C., Colombia


Trabajo Escenario 3:

1) Implemente una función en lenguaje java que, dado un arreglo de enteros, A, calcule y
retorne el número que más veces se repite en A. En caso de empate, la función puede
retornar cualquiera de los números más frecuentes.

La función acepta una matriz de enteros A como parámetro y devuelve el número que aparece más
en A. Para resolver el problema, la función calcula las frecuencias de cada dígito en A usando
HashMap. El algoritmo atraviesa la matriz A, calcula la frecuencia de cada número y actualiza el
número más frecuente en A y su frecuencia máxima. Finalmente, la función devuelve el número
que ocurre más en A.

La función numeroMasFrecuente recibe como parámetro un arreglo de enteros llamado A y


retorna el número que más veces se repite en el arreglo.

Se guarda en la variable n la longitud del arreglo A.

Se crea un HashMap llamado frecuencias que almacenará las frecuencias de los números en el
arreglo A. La clave del HashMap es el número y el valor es la frecuencia del número.
Se inicializan dos variables: maxFrecuencia con valor cero, que se utilizará para guardar la
frecuencia máxima encontrada hasta el momento, y numMasFrecuente con valor -1, que se
utilizará para guardar el número que más veces se repite hasta el momento.

Se inicia un ciclo for que recorre cada elemento del arreglo A. Se guarda en la variable num el
número actual y se inicializa la variable frecuencia con valor 1, que se utilizará para contar las
frecuencias de num.

Se verifica si num ya se encuentra en el HashMap frecuencias. Si es así, se obtiene la frecuencia


actual de num en el HashMap y se incrementa en 1 la variable frecuencia.

Se actualiza la frecuencia de num en el HashMap frecuencias.

Se verifica si la frecuencia actual de num es mayor que la frecuencia máxima encontrada hasta el
momento (maxFrecuencia). Si es así, se actualiza la frecuencia máxima (maxFrecuencia) y el
número que más veces se repite (numMasFrecuente).

Al final del ciclo for, se retorna el número que más veces se repite en el arreglo A.

En resumen, la implementación de la función utiliza un HashMap para contar las frecuencias de


cada número en el arreglo A y encuentra el número que más veces se repite en A actualizando las
variables maxFr
2) Investigue acerca del algoritmo de ordenamiento por inserción y: a. Reproduzca un
ejemplo (eso significa que usted debe seleccionar un conjunto de números desordenado y
mostrar paso a paso cuál es el efecto de aplicar el algoritmo de ordenamiento por
inserción sobre él). b. Responda ¿en qué consistiría el peor caso y por qué implica una
complejidad algorítmica de O(n2)? c. Implemente en Java una función que ordene un
arreglo de números enteros usando el algoritmo de ordenamiento por inserción.

A. Introduzca un ejemplo de clasificación:


Supongamos que tenemos los siguientes números desordenados:
5, 2, 4, 6, 1, 3
Primero tomamos el segundo elemento (2) y lo colocamos en el lugar correcto en la parte
ya ordenada de la lista (5). Como 2 es menor que 5, lo movemos un lugar a la izquierda:
2, 5, 4, 6, 1, 3
A continuación, tomamos el tercer elemento (4) y lo colocamos en la posición correcta en
la parte ordenada de la lista (2, 5). Como 4 es menor que 5 y mayor que 2, lo sumamos
entre ellos:
2, 4, 5, 6, 1, 3
Continuamos de esta manera, tomando cada elemento restante y colocándolo en el lugar
correcto en la parte ya ordenada de la lista. El resultado final será:
1, 2, 3, 4, 5, 6

B. Peor caso y complejidad del algoritmo:


El peor caso para el algoritmo de clasificación por inserción ocurre cuando la lista está en
orden inverso. En este caso, cada elemento debe compararse con todos los elementos
anteriores de la lista ya ordenada, lo que da como resultado una complejidad algorítmica
de O(n^2).
Por ejemplo, si tenemos una lista con 5 puntos en orden inverso: 5, 4, 3, 2, 1, el número
total de comparaciones es 10 (4 3 2 1), lo que da como resultado una complejidad de raíz
cuadrada.
C. Implementación en java

La función InsertionOrt toma una matriz de enteros como entrada y ordena sus elementos
mediante el algoritmo de ordenación por inserción. La complejidad algorítmica de esta
implementación es O(n^2) en el peor de los casos.

También podría gustarte