Taller del algoritmos 1
Taller del algoritmos 1
Taller del algoritmos 1
24. La forma de declarar una estructura nodo dentro de una lista enlazada de numeros
enteros en el lenguaje JAVA es Class Nodo {int dato; Nodo enlace; public Nodo(int
t){ dato = int ; enlace = int;}}. Falso
25. El siguiente algoritmo se utiliza para ordenar de forma ascendente los elementos
de una lista de valores.
Paso 1: Leer el número total de datos o elementos (n).
Paso 2: almacena los elementos en una matriz.
Paso 3: Coloque la posición inicial del elemento i = 1.
Paso 4: Compare el el elemento (que queremos ordenar) con el siguiente elemento de
la matriz. if (key)<= matriz, Then se bajar el siguiente elemento de la matriz en
uno. Else Inserte la clave en una matriz.
Paso 5: Repita el paso 4 para todos los n elementos.
Paso 6: Incremente el valor de i en1 y repita los pasos 4, 5 para i < n.
Paso 7: Imprima la lista ordenada de elementos.
Paso 8: Detener.
El algoritmo de ordenamiento que se ajusta a lo anterior es: Insercion
26. El siguiente algoritmo se utiliza para ordenar de forma ascendente los elementos
de una lista de valores.
Paso 1: Leer el numero total de datos o elementos (n).
Paso 2: almacena los elementos en una matriz.
Paso 3: Coloque la posicion inicial del elemento i = 1.
Paso 4: Compare el el elemento (que queremos ordenar) con el siguiente elemento de
la matriz. if (key) <= matriz, Then se bajar el siguiente elemento de la matriz en
uno. Else Inserte la clave en una matriz.
Paso 5: Repita el paso 4 para todos los n elementos.
Paso 6: Incremente el valor de i en 1 y repita los pasos 4, 5 para i < n.
Paso 7: Imprima la lista ordenada de elementos.
Paso 8: Detener.
El algoritmo de ordenamiento que se ajusta a lo anterior es: Insercion.
27. El siguiente método se utiliza para ordenar de forma ascendente los elementos de
una lista de valores: Paso 1: Dividir la lista de elementos en dos sublistas que
cada elemento en el subarreglo izquierdo es menor o igual que el elemento del medio
y cada elemento del subarreglo de la derecha es mayor que el elemento del medio. La
división de la matriz en dos submatrices se basa en el elemento pivote. Todos los
elementos que son menores que pivote deben estar en el subarreglo izquierdo y todos
los elementos que son más que pivote deben estar en el subarreglo derecho. Paso 2:
Ordenar recursivamente las dos submatrices. Paso 3: Combinar todos los elementos
ordenados en un grupo para formar una lista de elementos ordenados. El algoritmo de
ordenamiento que se ajusta a lo anterior es: QuickSort
28. Al ordenamiento de arrays tambien se le conoce como ordenamiento interno.
Verdadero
29. Seleccione las 4 (cuatro) opciones correctas. Son algoritmos que su complejidad
computacional en el peor de los casos es de O(n˄2)
Burbuja
Burbuja Bidireccional
QuickSort
Seleccion
30. Seleccione las 4 (cuatro) opciones correctas. ¿Cuáles son los algoritmos de
ordenamiento inestable?
Utilizan mayor almacenamiento al tratar de convertirlos en estables.
Pueden ser implementados especialmente para ser estables
Pueden cambiar el orden relativo de registros con claves iguales.
Se pueden extender artificialmente por medio de cotejamiento de claves, para que
las comparaciones entre dos objetos con claves iguales sean decididas usando...
(Incompleta)
33. Seleccione las 4 (cuatro) opciones correctas. Son características del algoritmo
de ordenación ShellSort:
Realiza más operaciones y tiene una mayor tasa de perdida de cache que QuickSort.
Se puede implementar usando un poco de código y no usa la pila de llamadas.
Es una optimización del ordenamiento por inserción que permite el intercambio de
elementos que están muy separados.
Puede servir como un sub-algoritmo de ordenamiento introspectivo, para ordenar
subarreglos cortos y prevenir una desaceleración cuando la profundidad de
recursividad excede un límite dado.
34. Seleccione las 3 (tres) opciones correctas. El ultimo nodo de la lista enlazada
por conveniencia se suele representar con:
La palabra null (nulo).
Una barra inclinada (/).
El símbolo eléctrico de tierra o masa.
Un triángulo isósceles.
35. La abstraccion:
Es el proceso por el cual se destacan los detalles relevantes para un cierto
propósito mientras se ocultan los irrelevantes para tal propósito
36. El siguiente pseudocodigo muestra la estructura de un algoritmo de ordenación
del tipo: desde I <-- 1 hasta N Hacer Si elemento elemento[l] > elemento[l+1] hacer
variableaux elemento[l] elemento[l]elemento[l+1] elemento[l+1] variableaux
FinSi FinHacer. ¿Con que algoritmo se corresponde? Burbuja
39. El siguiente código se utiliza para ordenar de forma ascendente los elementos de
una lista de valores: public static void Ordenar(int A[]){int p, j; int aux;
for(p=1 ; p < A.length; p++) {aux = A[p]; j = p - 1; while((j >= 0) && (aux <
A[j])){A[j +1] = A[j]; j--; } A[j + 1] = aux; }} El algoritmo de ordenamiento que
se ajusta a lo anterior es: Insercion
40. El siguiente algoritmo se utiliza para ordenar de forma ascendente los elementos
de una lista de valores. Paso 1: Leer el número total de elementos (n). Paso 2:
Almacenar los elementos en una matriz. Paso 3: Establecer el elemento inicial i =
0. Paso 4: Comparar los elementos adyacentes, si el primer elemento es más pequeño
que el segundo elemento entonces no hay intercambio de este elemento. De lo
contrario, intercambie el posición del elemento. El algoritmo de ordenamiento que
se ajusta a lo anterior es: Burbuja
41. El siguiente código se utiliza para ordenar de forma ascendente los elementos de
una lista de valores: public static void Ordenar(int A[]) ( int salto, aux, i;
boolean cambios; for (salto = A.length / 2; salto |= 0; salto /= 2) { cambios =
true; while (cambios) { cambios = false; for(i = salto; i < A.length; i++) { if
(A[i- salto] > A[(]) {aux = A[i); A[i] = A[i - salto]; A[i- salto] = aux; cambios =
true; }}}})El algoritmo de ordenamiento que se ajusta a lo anterior es: ShellSort
46. Para aplicar la búsqueda secuencial o Binaria siempre se debe tener en cuenta
que:
La búsqueda secuencial se aplica para localizar una clave en un vector no ordenado.
50. ¿En que se basa el proceso del algoritmo de ordenamiento por intercambio?
El algoritmo se basa en la lectura sucesiva de la lista a ordenar
55. El tiempo de ejecución para la operación de <<modificar>> (set) de las API Java
LinkedList (listas doblemente enlazadas) para un elemento que se encuentra cerca de
la parte central de la lista es de: O(1).
60. Seleccione las 2 (dos) opciones correctas. En una lista enlazada cada elemento
debe contener un campo:
Con el valor del elemento.
Con un enlace que contiene la posición del siguiente elemento.
61. Seleccione la opción correcta. Indique a qué se hace referencia cuando nos
referimos a la longitud de una lista simple:
Nos referimos a cuánto del espacio físico está utilizando la lista en un momento
determinado
A la cantidad de elementos que componen la lista.
63. El último nodo de una lista enlazada debe: Tener Null como enlace.
66. En una lista enlazada, el nodo auxiliar AUX, nos sirve para: Recorrer la lista.
67. Una LISTA ENLAZADA permite insertar y eliminar siguiendo el criterio de:
Insertar en cualquier lugar y eliminar cualquier elemento.
68. En una Lista Enlazada, utilizamos Nodos Auxiliares para realizar operaciones,
uno de ellos es llamado FIN, el cual se utiliza para:
Almacenar la referencia al último nodo de la lista, también llamado último.
69. En una Lista Enlazada conocemos también al NODO NUEVO como: Tmp.
72. En una Lista Enlazada, al referirnos al primer nodo, estamos mencionando al:
Primero según el orden lógico.
76. ¿Qué sucede en una lista simple cuando se apunta la referencia frente a null?
Seleccione la respuesta correcta. Se elimina la lista completa de la memoria.
80. Las operaciones básicas implementadas para manejar listas enlazadas son
únicamente:
Listavacia(L), Insertar(L,x,p), Localizar(Lx) y Suprimir(L,x). Falso.
81. ¿Para qué se utilizan las listas enlazadas de la API Java- LinkedList?
Evitar tener que mover grandes cantidades de datos.
84. El tiempo de ejecución para la operación de <<mostrar >> (get) de las API Java
LinkedList (listas doblemente enlazadas) para un elemento que se encuentra cerca de
la parte central de la lista es de: O(N).
86. Si al comparar dos cadenas u objetos con compareTo() obtenemos como resultado
0(cero), si hacemos la misma operación con equals() el resultado debe ser: True.
96. Puede derivarse una clase de lista enlazada ordenada a partir de una clase de
lista. Verdadero
97. ¿Cómo se comprueba fácilmente si una lista doblemente enlazada está vacía?
Seleccione las 2 (dos) opciones
head.next == tail.
tail.prev == head.
99. Podemos decir que las listas Doblemente Enlazadas comparadas con las simplemente
enlazadas tienen una utilización de memoria: Mayor.
100. ¿Se pueden usar, simultáneamente, Listas Doblemente Enlazadas con Listas
Circulares? Si.
101. Indique cuál de las siguientes afirmaciones es falsa con respecto a una lista
circular simplemente enlazada:
Las listas circulares son estructuras de datos en la que el último nodo apunta al
inmediatamente anterior.
102. ¿Cuáles de los siguientes se corresponden con los pasos para eliminar un
elemento de una lista doblemente enlazada? Selecciones las 4 (cuatro) opciones
correctas.
La referencia siguiente del nodo anterior tiene que apuntar a la referencia
siguiente del nodo a eliminar (si no es nodo cabecera).
Buscar del nodo que contiene el dato.
La referencia anterior del nodo siguiente a borrar tiene que apuntar a la
referencia anterior del nodo a eliminar (si no es el último nodo).
Si el nodo que se elimina es el primero, frente, se modifica frente para que tenga
la dirección del nodo siguiente. Luego la memoria ocupada por el nodo es liberada
automáticamente.
Buscar el nodo cabecera no va
104. En una lista simplemente enlazada, ¿Cómo agregamos un nuevo elemento al final de
la misma? Seleccione la opción correcta:
Ir al primer nodo, recorrer la lista hasta el nodo final que posee el valor NULL en
su referencia al siguiente.
106. Cuando hablamos de una lista doblemente enlazada decimos que: Seleccione la
respuesta correcta:
Permite un recorrido bidireccional de la lista almacenando 2 enlaces por cada nodo.
109. Las listas enlazadas circulares permiten extraer los datos desde el fondo de una
pila. Falso
111. En una lista enlazada que carece de elemento el puntero adyacente tiene un valor
nulo. FALSE
116. Determine cuál es la afirmación correcta del método set() de la clase ArrayList:
Reemplaza el objeto en la i-ésima posición de la colección por otro que recibe como
parámetro
117. La implementación de ArrayList está basada en: Seleccione la respuesta correcta.
El uso de un array que se ira redimensionando en la medida en que todas sus
posiciones vayan siendo utilizadas
118. Indicar los métodos definidos en la clase ArrayList: Seleccione las 4 (cuatro)
Remove().
Set().
Contains().
Clear().
119. Indique cuál de los siguientes son métodos definidos por la interface
ListIterator: Seleccione las 4 (cuatro)
Previous.
HasNext.
Next.
HasPrevious.
121. ¿Qué nombre recibe el nodo centinela que se inserta al inicio de la lista cuando
de implementan listas doblemente enlazadas? Header.
124. ¿Cómo queda el arreglo {3, 4, 1, 0, 2} luego de dos iteraciones usando el método
SelectionSort? Seleccione la respuesta correcta {0, 1, 4, 3, 2}
125. El siguiente algoritmo se utiliza para ordenar de forma ascendente los elementos
de una lista de valores: Paso 1: Se divide la matriz de particion en dos sublistas
SL1 y SL2 con (n / 2) elementos cada.
Paso 2: Luego se clasifican las sublistas SL1 y SL2 independientemente.
Paso 3: Combinar SL1 y SL2 en un grupo (matriz) ordenado único. El algoritmo de
ordenamiento que se ajusta a lo anterior es: MergeSort.
134. Suponiendo que una lista esta almacenada como un array, donde los indices de la
lista son bajo = 0 y alto = n-1 donde n es el numero de elementos del array, los
pasos a seguir serian: 1. Calcular el indice del punto central del array: central
(bajo + alto)/2 (division entera) 2. Comparar el valor de este elemento central con
el ultimo elemento: Si a[central] < clave, la nueva sublista de busqueda tiene por
valores extremos de su rango bajo = central+1. alto. Si clave < a[central], la
nueva sublista de busqueda tiene por valores extremos de su rango bajo. central-1.
Falso
138. ¿Cómo se denomina la secuencia h1, h2, etc en el método Shellsort? Seleccione la
respuesta correcta Secuencia de incrementos.
140. ¿Qué algoritmo consiste en dividir al array en varios subarrays más pequeños
formados por aquellos elementos del array original que se encuentran separados
entre si por una determinada “distancia de paso”? ShellSort.
141. ¿Cuáles de las siguientes son las características del algoritmo Shellsort?
Seleccione las 4 (cuatro).
La velocidad del algoritmo dependerá de la secuencia de incrementos.
Es el algoritmo más adecuado para ordenar entradas de datos moderadamente grandes
(decenas de millares de elementos).
Intercambio elementos distantes siguiendo una secuencia de incrementos.
Su implementación (código) es relativamente sencilla.
142. ¿Cuál de los siguientes algoritmos de ordenación es una mejora del algoritmo por
inserción? Seleccione la respuesta correcta Shellsort.
145. Seleccione las 4 (cuatro) opciones correctas. ¿Cuáles son las características
del algoritmo de ordenación Shellsort?
Su velocidad depende de la secuencia de valores con los cuales trabaja,
ordenándolos.
Es adecuando para ordenar listas de tamaño moderado.
Primero mueve los valores usando tamaños de espacio gigantes, de manera que un
valor pequeño se moverá bastantes posiciones hacia su posición final, con solo unas
pocas comparaciones e intercambios.
Su velocidad es aceptable y su codificación es bastante sencilla.
146. Seleccione las 4 (cuatro) opciones correctas. Son características del algoritmo
de ordenamiento ...(Incompleto)... (Deberia ser MergeSort):
Puede servir como un sub-algoritmo de ordenamiento introspectivo, para ordenar
subarreglo ...(Incompleta)... Realiza más operaciones y tiene una mayor tasa de
perdida de cache que Quicksort.
Es una optimización del ordenamiento por inserción que permite el intercambio de
elemento ...(Incompleta)... Se puede implementar usando poco código y no usa la
pila de llamadas.
Es un algoritmo muy poco optimizado para gran cantidad de datos. no va!
147. Seleccione las 2 (dos) opciones correctas. ¿Cuáles de las siguientes opciones se
corresponden con algoritmos de ordenamiento inestables?
QuickSort.
ShellSort.
148. Seleccione las 2 (dos) opciones correctas. ¿Cuáles de las siguientes opciones se
corresponden con algoritmos de ordenamiento estables?
Burbuja.
MergeSort.
150. Si se tiene el arreglo A={1, 13, 26, 24} y el arreglo B={2, 15, 27, 38} como
entradas al algoritmo básico Mergesort. Por otro lado ya ocurrieron dos
…(Incompleto)... básico Mergesort, con cual el arreglo de salida ha quedado como
C={1, 2} ¿Contra qué valor de A se comparó a 2 (que pertenece a B) para que se
ingresara como segundo C? 13.
151. Las siguientes etapas: 1- Si el número de elementos a ordenar es 0 o 1 volver.
2- Ordenar recursivamente y por separado la primera y segunda mitad. 3- Mezclar las
dos mitades ordenadas para obtener un total ordenado. ¿A qué método de ordenamiento
se corresponden? MergeSort
152. Dado el siguiente arreglo [14, 7, 3, 12, 9, 11, 6, 2] ¿Cuál es el valor del
punto medio, denominado usualmente como “q”, y que debe ser calculado durante el
paso divide en el algoritmo Mergesort? 3.
154. ¿Cuál es el tiempo de ejecución del peor caso en el método Mergesort? O(N*lg N)
157. ¿Cuáles de las siguiente son las características del algoritmo Quicksort?
Seleccione las 4 (cuatro) opciones
Es fruto de la técnica de resolución de algoritmos divide y vencerás.
Posee un ciclo interno muy ajustado (pocas operaciones).
Para el peor caso tiene un tiempo O(N2).
Su tiempo de ejecución promedio es O(N * Log(N)).
158. ¿Cuál es el tiempo de ejecución del caso promedio el método Quicksort?O(N*lg N).
159. ¿Cuál es el tiempo de ejecución del mejor caso en el método Quicksort?O(N*lg N).
160. ¿Cuál es el tiempo de ejecución del peor caso en el método Quicksort? O(N^2).
167. ¿Cuáles de estos algoritmos poseen un tiempo de ejecución O(N2) para el peor de
los casos? Seleccione TRES
ShellSort.
InsertionSort.
QuickSort.
175. Nos posicionamos al final de la lista y enlazamos el nuevo nodo con referencia
al último nodo de la lista.
178. Dado el siguiente código indicar su salida correcta: uno dos tres
185. se tiene una lista con un método encolar, que almacena valores enteros: 12
187. El algoritmo de ordenación que utiliza para el pivote un índice que tiene como
valor la mediana del primer, medio y último elemento de la partición (particiones
grades) para el pivote, conocido como regla de “mediana de tres” se conoce como:
QuickSort
188. Seleccione las 4 (cuatro) opciones correctas. La estrategia para implementar el
algoritmo de ordenación de burbuja consta de los siguientes pasos, ¿Cuáles son?
Cuando no hay pares invertidos, la matriz se ordena. Esto justifica nuestra
condición de parada.
Ordenados incorrectamente. Luego encuentre una j, tal que matriz [j+1] < matriz
[j].
Escanear la matriz, buscando pares de elementos consecutivos que estén ordenados
incorrectamente.
Siempre que se encuentre un par de este tipo, cámbielos y continúe buscando hasta
que final de la matriz, luego de nuevo desde el principio. Deténgase cuando un
escaneo a través de toda la matriz no encuentre par ordenado.
189. Seleccione CUATRO: Las listas circulares presentan características ¿Cuáles son?
Las operaciones de concatenación y división de listar son más eficaces.
El último elemento apunta al principio de la lista.
Cada nodo de una lista circular es accesible.
Disponen de un nodo especial.
191. El siguiente código se utiliza para ordenar de forma ascendente los elementos de
una lista de valores:
public void sort(String[] datos) { List<String> list = new ArrayList<>();
Collections.addAll(list, datos); sort(list); list.toArray(datos); } private void
sort(List<String> list) { if (list.size() <2) return; int m = list.size()/2;
List<String> izq = new ArrayList<> (list.subList(0, m)); List<String> der = new
ArrayList<>(list.subList(m, list.size())); sort(izq); sort(der); sort(izq);
sort(der); list.clear(); while (izq.size() > 0 && der.size() > 0) { String si
izq.get(0); String sd = der.get(0); if (si.compareTo(sd) < 0)
list.add(izq.remove(0)); else list.add(der.remove(0)); } list.addAll(izq);
list.addAll(der); } El algoritmo de ordenamiento que se ajusta a lo anterior es:
MergeSort.
197. Las siguientes son etapas son las que se deben considerar para implementar el
algoritmo de inserción entre dos nodos (n1, n2): 1) Crear un nodo con el nuevo
elemento y el campo enlace a null. 2) Hacer que el campo enlace del nuevo nodo
apunte al nodo n2. 3) La variable referencia tiene la dirección del nodo n2, y eso
exige hacer que anterior Enlace apunte al n1. FALSO