You are on page 1of 21

Resumen

- Una estructura de datos, es la organizacin de la informacin en la memoria de un computador o


en un archivo de disco.

- La correcta eleccin de una estructura de datos, permite mayores mejoramientos en la eficiencia


de un programa.

- Ejemplos de estructuras de datos son: Arreglos, pilas y listas enlazadas.

- Un algoritmo es un procedimiento para llevar a cabo una tarea.

- En java, un algoritmo es usualmente implementado por un mtodo de clase.

- Muchas de las estructuras de datos y algoritmos descritos en este libro, son a menudo usados
para crear bases de datos.

- Algunas estructuras de datos que son usadas como herramientas para el programador: Ayudan a
ejecutar un algoritmo.

- Otras estructuras de datos modelan situaciones del mundo real, como lneas telefnicas que
corren a travs de las ciudades.

- Una base de datos es una unidad de almacenamiento de datos compuesta por muchos registros
similares.

- Un registro a menudo representa un objeto del mundo real, como un empleado o una parte de
un automvil.

- Un registro es dividido en campos. Cada campo almacena una caracterstica del objeto descrito
por el registro.

- Una llave, es un campo en un registro que es usado para llevar a cabo alguna operacin de la
informacin. Por ejemplo, los registros de personal deberan ser ordenados por el campo Apellido.

- Una base de datos puede ser buscada por todos los registros, cuyas llaves tienen cierto valor.
Este valor es llamada "Llave de bsqueda".

Preguntas

1.- En muchas estructuras de datos, puedes insertar un registro, buscarlo y borrarlo.

2.- Reordenar el contenido de una estructura de datos, en cierto orden es llamado ordenamiento .
3.- En una base de datos, un campo es:

a) Un tem especifico de dato.

b) Un objeto especifico.

c) Parte de un registro.

d) Parte del algoritmo.

4.- El campo utilizado cuando se busca por un registro en particular es la llave de bsqueda.

5.-En la programacin orientada a objetos, un objeto:

a) Es una clase.

b) Puede contener datos en mtodos.

c) Es un programa.

d) Puede contener clases.

6.- Una clase

a) Es un modelo de muchos objetos.

b) Representa un objeto especifico del mundo real.

c) Sostendr valores especficos en sus campos.

d) Especifica el tipo de un mtodo.

7.- En java, la especificacin de una clase:

a) Crea un objeto.

b) Requiere de la clave "new".

c) Crea referencias.

d) Ninguna de las anteriores.

8.- Cuando un objeto quiere hacer algo, utiliza un mtodo.

9.- En java, para acceder al mtodo de un objeto, se requiere del operador punto.

10.- En java, booleanos y bytes son tipos de datos.


Resumen arreglos

- Los arreglos en java son objetos, creados con el operador "new".

- Los arreglos desordenados ofrecen una insercin rpida, pero una lenta bsqueda y eliminacin.

- Proteger a un arreglo en una clase, protege al arreglo de ser alterado inadvertidamente.

- Una interfaz de clase, est compuesta de los mtodos (y ocasionalmente campos) de los que el
usuario clase puede acceder.

- Una interfaz de clase puede ser diseada para hacer las cosas simples para el usuario de clase.

- Una bsqueda binaria puede ser aplicada a un arreglo ordenado.

- El logaritmo de base B de un numero A es el nmero de veces que puedes dividir A por B, antes
que el resultado sea menor a 1.

- Las bsquedas lineales requieren tiempo proporcional al nmero de tems en el arreglo.

- Las bsquedas binarias requieren tiempo proporcional al logaritmo del numero de tems.

- La notacin Big O provee una conveniente manera de comparar la velocidad de los algoritmos.

- Un algoritmo que corre a O(1) es el mejor, O(log N) es bueno, O(N) es normal, y O(N2) es muy
malo.

Preguntas de arreglos

1.- Insertar un elemento en un arreglo desordenado

a) Toma un tiempo proporcional al tamao del arreglo.

b) Requiere mltiples comparaciones.

c) Requiere cambiar otros elementos para hacer una pieza.

d) Toma el mismo tiempo, no importa cuntos elementos hayan.

2.- Verdadero o Falso: Cuando borras un elemento desde un arreglo desordenado, en muchos
casos cambias otros elementos para llenar el espacio. (Verdadero).

3.- En un arreglo desordenado, permitir duplicados

a) Incrementa el tiempo para todas las operaciones.

b) Incrementa el tiempo de las bsquedas en algunas ocasiones.

c) Siempre incrementa el tiempo de insercin.


d) A veces disminuye el tiempo de insercin.

4.- Verdadero o Falso: En un arreglo desordenado, generalmente es ms rpido encontrar un


elemento que no est en el arreglo, que encontrar uno que si lo est. (Falso).

5.- Para crear un arreglo en java, se requiere de la clave new.

6.- Si una clase A va a usar una clase B para algo, entonces.

a) El mtodo de la clase A debera ser fcil de entender.

b) Es preferible si la clase B se comunica con el usuario.

c) Las operaciones ms complejas deberan estar en la clase A.

d) Mientras ms trabajo pueda hacer la clase B, mejor.

7.- Cuando la clase A est usando a la clase B para algo, los mtodos y campos de la clase A
pueden acceder a la clase B, son llamados interfaz de la clase B.

8.- Los arreglos ordenados, comparados con los desordenados, son.

a) Mucho ms rpidos en la eliminacin.

b) Ms rpidos en la insercin.

c) Ms rpidos de crear.

d) Ms rpidos en la bsqueda.

9.- Un logaritmo es la inversa de la potencia.

10.- El logaritmo en base 10 de 1.000 es 3 .

11.- El mximo nmero de elementos que deben ser examinados para completar una bsqueda
binaria en un arreglo de 200 elementos es.

a) 200.

b) 8.

c) 1.

d) 13.

12.- El logaritmo en base 2 de 64 es 6.

13.- Verdadero o Falso: El logaritmo en base 2 de 100 es 2. (Falso).


14.- La notacin Big O dice:

a) Como la velocidad de un algoritmo se relaciona al nmero de elementos.

b) El tiempo de ejecucin de un algoritmo para un tamao dado de la estructura de datos.

c) El tiempo de ejecucin de un algoritmo para un numero dado de elementos.

d) Como el tamao de la estructura de datos se relacin con el nmero de elementos.

15.- O(1) significa que un proceso opera en tiempo constante.

16.- Tanto variables como tipos primitivos u objetos pueden ser puestos en un arreglo.

Resumen ordenamiento simple

- Los algoritmos de ordenamiento, en este captulo, estn asumidos en arreglos como estructura
de almacenamiento.

- El ordenamiento involucra comparar las llaves de los elementos en el arreglo y moverlos hasta
que estn ordenados.

- Todos los algoritmos en este captulo, se ejecutan en O(N2). Sin embargo, algunos pueden ser
sustancialmente ms rpidos que otros.

- Una invariante es una condicin que permanece sin cambiar mientras un algoritmo se ejecuta.

- El mtodo de la burbuja es el menos eficiente, pero el ms simple.

- El mtodo de insercin es el ms comnmente usado de los mtodos de orden O(N2).

- Un mtodo de ordenacin es estable si el orden de elementos con el mismo valor es retenido.

- Ninguno de los mtodos de ordenamiento de este captulo requiere de ms de una variable


temporal, adicional al arreglo original.

Preguntas ordenamiento simple

1.- Los algoritmos de ordenamiento hechos por computadoras son ms limitados que los de los
humanos porque:

a) Los humanos son mejores inventando algoritmos.

b) Las computadoras solo pueden manejar un monto de informacin.


c) Los humanos saben que ordenar, mientras que las computadoras necesitan que se los digan.

d) Las computadoras solo pueden comparar dos cosas a la vez.

2.- Dos operaciones bsicas del ordenamiento simple son comparar elementos e intercambiarlos
(o algunas veces copiarlos).

3.- Verdadero o Falso: El mtodo de la burbuja siempre termina comparando cada tem con todos
los dems. (Falso).

4.- El algoritmo de la burbuja alterna entre:

a) Comparar e intercambiar.

b) Mover y copiar.

c) Mover y comparar.

d) Copiar y comparar.

5.- Verdadero o Falso: Si hay N elementos, el mtodo de la burbuja realiza exactamente N*N
comparaciones. (Falso).

6.- En el mtodo de seleccin:

a) Los valores ms grandes se acumulan a la izquierda (ndices ms bajos).

b) El valor mnimo es repetidamente descubierto.

c) Un numero de elementos debe ser cambiado para insertar cada elemento en su posicin
ordenada correspondiente.

d) Los elementos ordenados se acumulan por la derecha.

7.- Verdadero o Falso: Si, en una situacin de ordenamiento en particular, el intercambio toma
mucho ms tiempo que las comparaciones, el mtodo de seleccin es aproximadamente dos veces
ms rpida que el mtodo de la burbuja. (Falso).

8.- Una copia es tres veces ms rpida que un intercambio.

9.- En el mtodo de seleccin. Qu es una invariante?.

R: Elementos con ndices menores o iguales que lo ordenado externamente.


10.- En el mtodo de seleccin, el "jugador marcado" descrito en el texto corresponde a que
variable en el insertSort.javaprogram?

a) In

b) Out

c) temp

d) a[out]

11.- En el mtodo de insercin, "parcialmente ordenado" significa que:

a) Algunos elementos ya estn ordenados, pero pueden requerir ser movidos.

b) Muchos elementos estn en su posicin final de orden, pero unos pocos aun necesitan ser
ordenados.

c) Solo algunos elementos son ordenados.

d) Un grupo de elementos son ordenados entre ellos mismos, pero puede ser necesario insertar
dentro del grupo algunos elementos externos al grupo.

12.- Cambiar un grupo de elementos a la izquierda o derecha requiere de reiterativas copias.

13.- En el mtodo de insercin, despus de que un elemento es insertado en el grupo


parcialmente ordenado, este:

a) No ser movido de nuevo.

b) Nunca ser cambiado a la izquierda.

c) A menudo se mueve fuera del grupo.

d) Encuentra que su grupo es continuamente reducido.

14.- La invariante en el mtodo de insercin es: Elementos con ndices menores que los elementos
parcialmente ordenados.

15.- Estabilidad, hace referencia a:

a) Elementos con valores secundarios siendo excluidos de un ordenamiento.

b) Mantener ciudades ordenadas incrementando la poblacin en cada estado, en un orden por


estado.

c) Mantener los nombres ligados a sus apellidos.


d) Los elementos mantienen el mismo orden de las llaves primarias sin visitar las llaves
secundarias.

Resumen Pilas y colas

- Pilas, colas y colas de prioridad son estructuras de datos usualmente utilizadas para simplificar
ciertas operaciones de programacin.

- Estas estructuras de datos, solo se puede acceder a un dato.

- Una pila permite acceder al ltimo ingresado.

- Las operaciones importantes de las pilas son push (insertar un tem en la cima (top) de la pila) y
pop (quitar el tem que est en la cima (top)).

- Una cola permite acceder al primer tem ingresado.

- Las operaciones importantes de la cola son insertar un tem en la parte trasera de la cola (rear) y
quitar el tem desde la parte frontal de la cola (front).

- Una cola puede ser implementada como cola circular, que est basada en un arreglo cuyos
ndices se envuelven circularmente desde el fin del arreglo hasta el inicio.

- Una cola de prioridad permite acceder al elemento ms pequeo (o a veces al ms grande).

- Las operaciones importantes de la cola de prioridad son insertar un elemento en orden y quitar
el elemento de valor ms pequeo.

- Estas estructuras de datos pueden ser implementadas con arreglos o con otro mecanismo como
listas enlazadas.

- Las expresiones aritmticas ordinarias estn escritas en notacin infija, llamadas as porque el
operador est escrito entre dos operandos.

- En la notacin post-fija, el operador est despus de los operandos.

- Las expresiones aritmticas son tpicamente evaluadas traducindolas a notacin post-fija y


luego evaluando la expresin post-fija.

- Una pila es una herramienta til tanto para traducir una expresin in-fija a post-fija como para
evaluar una expresin post-fija.

Preguntas pilas y colas

1.- Suponiendo que ingresamos 10, 20, 30 y 40 en una pila. Luego sacamos tres elementos. Cual
queda en la pila?

R: 10.
2.-Cual de las siguientes es verdadera?

a) La operacin Pop en una pila es considerablemente ms simple que la operacin quitar en una
cola.

b) El contenido de una cola puede envolverse circularmente, mientras que en una pila no.

c) La cima (top) de una pila corresponde al frente (front) de una cola.

d) En la pila y en la cola, los elementos removidos en secuencia son quitados desde altos ndices en
el arreglo.

3.- Que significa LIFO y FIFO?

R: LIFO: Last in first out (ltimo en entrar, es el primero en salir)


FIFO: First in first out (primero en entrar, es el primero en salir)

4.- Verdadero o Falso: Una pila o cola a menudo sirve como el mecanismo de trasfondo en el que
se basa un arreglo ADT.(Falso)

5.- Asuma que un arreglo est enumerado con ndice 0 en la izquierda. Una cola representando la
fila para entrar a ver una pelcula, y el primero en llegar, que tiene el numero 1, tiene la ventana
de tickets a su derecha. Entonces:

a) No hay relacin numrica entre el numero de ndices y la fila para entrar.

b) Los nmeros de ndice del arreglo y los nmeros de la fila para entrar incrementan en
direcciones opuestas de izquierda a derecha.

c) Los nmeros de los ndices del arreglo corresponden numricamente a la posicin en la fila para
entrar.

d) La fila para entrar y los elementos del arreglo se mueven en la misma direccin.

6.- Como otros elementos son insertados y removidos, hay un tem que se mueve a lo largo del
arreglo desde ndices bajos a ndices altos? o de ndices altos a bajos?

R: Ninguno se mueve.

7.- Suponga que se insertan 15, 25, 35 y 45 en una cola. Luego se quitan 3 elementos. Cul
queda?

R: 45.

8.- Verdadero o Falso: Ingresando y quitando elementos en una pila e insertando y quitando
elementos en una cola. Todos toman tiempo O(N). (Falso, toman O(1)).

9.- Una cola debe ser usada para mantener:


a) Los elementos para ser ordenados en un mtodo de insercin.

b) Reportes de una variedad de inminentes ataques en una nave espacial Enterprise.

c) Tecleos hechos por un usuario de computador escribiendo una carta.

d) Smbolos en una expresin algebraica siendo evaluados.

10.- Insertar un elemento en una tpica cola de prioridad toma qu orden O?

R: O(N)

11.- El termino prioridad en una cola de prioridad significa que:

a) Los elementos de ms alta prioridad son insertados primero.

b) El programador debe priorizar acceso al arreglo de trasfondo.

c) El arreglo de trasfondo es ordenado por la prioridad de los elementos.

d) Los elementos de ms baja prioridad son eliminados primero.

12.- Verdadero o Falso: Al menos uno de los mtodos en cdigo de cola de prioridad usa una
bsqueda lineal. (Verdadero).

13.- Una diferencia entre una cola de prioridad y un arreglo ordenado es que:

a) El elemento de menor prioridad no puede ser extrado fcilmente del arreglo como lo es en la
cola de prioridad.

b) El arreglo debe estar ordenado, mientras que en la cola de prioridad no lo necesita estar.

c) El elemento de ms alta prioridad puede ser extrado fcilmente desde la cola de prioridad, pero
no desde el arreglo.

d) Todas las anteriores.

14.- Suponga que bas una cola de prioridad como clase en la clase del arreglo ordenado. Esta
comprar la capacidad de la bsqueda binaria. Si quieres el mejor funcionamiento para tu cola de
prioridad, necesitaras modificar la clase del arreglo ordenado? (pregunta ql weviada).

R: Si, se necesitara un mtodo para encontrar el valor mnimo.

15.- Una cola de prioridad puede ser usada para mantener:

a) Pasajeros que suben a un taxi desde distintas partes de la ciudad.

b) Tecleos hechas por un teclado de computador.


c) Cuadrados de una tabla de ajedrez en un programa de juegos.

d) Planetas en una simulacin del sistema solar.

Resumen listas enlazadas.

- Una lista enlazada consiste en una linkedListobject y un numero de Linkobjects.

- El objeto LinkedList contiene una referencia, a menudo llamada first (primero), al primer link d la
lista.

- Un nextValue (prximo valor) null (nulo), seala el fin de la lista.

- Insertar un elemento en el principio de una lista enlazada involucra cambiar el siguiente campo
de "new link" apuntando al viejo "first link" (primer link) y cambiar el primero apuntando al nuevo
tem.

- Borrar un elemento al comienzo de una lista, involucra poner "first" apuntando a "first.next" (el
siguiente al primero).

- Para recorrer una lista enlazada, se empieza del primer elemento, luego de link en link, usando
cada "prximo link" de cada link para encontrar el prximo link.

- Un link con un valor especifico puede ser encontrado recorriendo la lista. Una vez encontrado, un
tem puede ser mostrado, borrado u operado en otras maneras.

- Un nuevo link pude ser insertado antes o despus de un link con un valor especificado, siguiendo
un recorrido para encontrar este link.

- Una lista doblemente terminada mantiene un puntero al ltimo link en la lista, a menudo
llamado "last" (ultimo) lo mismo con el primero.

- Una lista doblemente terminada permite la insercin al fin de la lista.

- Un tipo de dato abstracto (ADT) es una clase de almacenamiento de datos considerado sin
referencias a su implementacin.

- Las pilas y colas son ADTs. Pueden ser implementadas usando tanto arreglos como listas
enlazadas.

- En una lista enlazada ordenada, los link son puestos en orden ascendente ( o a veces
descendente) segn su valor.

La insercin en las listas enlazadas ordenadas toma de un tiempo O(N) porque el punto de
insercin correcto debe ser encontrado. La eliminacin del link ms pequeo toma tiempo O(1).

- En una lista doblemente enlazada, cada link contiene una referencia al link anterior tambin al
prximo link.
- Una lista doblemente enlazada permite recorridos en reversa y eliminacin desde el fin de la
lista.

- Un iterador es una referencia, encapsulada en un objeto de clase, que apunta a un link en una
lista asociada.

- Los mtodos del iterador permiten al usuario mover el iterador a lo largo de la lista y acceder al
link actualmente apuntado (current).

- Un iterador puede ser usado para recorrer a travs de la lista, realizando algunas operaciones en
los link seleccionados (o en todos los link).

Preguntas de listas enlazadas

1.- Cul de las siguientes no es verdadera? Una referencia a un objeto de clase:

a) Puede ser usada para acceder a un mtodo public en el objeto.

b) Tiene un tamao dependiendo de su clase.

c) Tiene el tipo de dato de la clase.

d) No sostiene al objeto mismo.

2.- El acceso a los link en una lista enlazada es usualmente a travs del primer link (first).

3.- Cuando creas una referencia a un link en una lista enlazada, este:

a) Debe referirse al primer link (first).

b) Debe referirse al link apuntado actualmente (current).

c) Debe referirse al link apuntado como siguiente (current.next).

d) Se puede referir a cualquier link que quieras.

4.- Cuantas referencias debes cambiar para insertar un link en medio de una lista enlazada
simple?

R: 2.

5.- Cuantas referencias debes cambiar para insertar un link al final de una lista enlazada simple?

R: 1.

6.- En el mtodo insertFirst(); La expresin newLink.next = first; significa que:

a) El prximo nuevo link a ser insertado, ser referido al primero.


b) "first" ser referenciado al nuevo link.

c) El prximo campo del nuevo link ser referido al antiguo first link.

d) newLink.next ser referido al nuevo first link en la lista.

7.- Asumiendo que current (actual) apunta del siguiente al ltimo en una lista enlazada simple,
Que expresin eliminar al ltimo link de la lista?

R: current.next = null;

8.- Cuando todas las referencias (o enlaces) a un link son cambiadas para otro link, que pasa con
el link?

R: Es destruido por el recolector de basura del computador.

9.- Una lista doblemente terminada:

a) Puede ser accedida por cualquier final.

b) Es otro nombre para la lista doblemente enlazada.

c) Tiene punteros corriendo hacia adelante y hacia atrs entre los links.

d) Tiene su primer link conectado con su ultimo link.

10.- Un caso especial ocurre a menudo para la rutina de insercin y eliminacin cuando la lista est
vaca.

11.- Asumiendo que una copia toma ms tiempo que una comparacin, es ms rpido borrar un
tem con cierto valor de una lista enlazada o de un arreglo desordenado?

R: De una lista enlazada.

12.- Cuntas veces necesitaras recorrer una lista enlazada simple para borrar el item con el valor
ms grande?

R: Una vez, si la lista incluye la referencia previous (previo).

13.- De lo discutido acerca de listas en este captulo, Cul sera la mejor para implementar una
cola?

R: La lista doblemente terminada.

14.- Cul de los siguientes no es verdadero? Los iteradores seran tiles si quisieras:

a) Hacer una insercin en una lista enlazada.

b) Insertar un nuevo link al comienzo de la lista.


c) Intercambiar dos links a posiciones arbitrarias.

d) Borrar todos los links con cierto valor.

15.- Cual crees que sera la mejor opcin para implementar una pila: Una lista enlazada simple o
un arreglo?

R: Usualmente, la lista. Ambas poseen push y pop en tiempo O(1), pero la lista usa memoria ms
eficientemente.

Resumen Recursin

- Un mtodo recursivo se llama a si mismo repetidamente, con diferentes parmetros cada vez.

- Algunos valores de sus parmetros causan que un mtodo recursivo retorne sin llamarse a si
mismo. Esto es llamado, caso base.

- Cuando la instancia ms interna de un mtodo recursivo retorna, el proceso se desenrolla


completando las instancias pendientes del mtodo, yendo desde el ultimo hasta la llamada
original.

- Un numero triangular es la suma de si mismo y todos los nmeros ms pequeos que el mismo.
Por ejemplo, el numero triangular de 4 es 10 porque 4+3+2+1 = 10.

- El factorial de un numero es el producto de si mismo y todos los nmeros son ms pequeos que
el mismo. Por ejemplo el factorial de 4 es 4*3*2*1 = 24.

- Los nmeros triangulares y los factoriales pueden ser calculados usando mtodos recursivos o
ciclos simples.

- El anagrama de una palabra (todas las combinaciones posibles de sus letras) pueden ser
encontradas recursivamente rotando repetidamente sus letras y haciendo el anagrama el n-1 de
ellos.

- Una bsqueda binaria puede ser llevada a cabo recursivamente revisando en que mitad del rango
ordenado est el valor buscado, y luego haciendo lo mismo con esa mitad.

- El puzle de las torres de hanoi consiste en tres torres y un numero arbitrario de anillos.

- El puzle de las torres de hanoi puede ser resuelto recursivamente moviendo todo menos el disco
del fondo del sub-rbol a una torre intermedia, mover el disco de fondo a la torre destinada, y
finalmente mover el sub-rbol a su destino.

- Mezclar dos arreglos ordenados significa crear un tercer arreglo que contiene todos los
elementos de ambos arreglos de manera ordenada.
- En el mtodo de mezcla (mergesort) 1-elementos sub-arreglos de un arreglo ms largo son
mezclados en 2-elementos sub-arreglos, 2-elementos sub-arreglos son mezclados en 4-elementos
sub-arreglos, y as hasta que el arreglo completo est ordenado.

- El mtodo de mezcla (mergesort) requiere de un tiempo O(N*logN).

- El mtodo de mezcla requiere de un espacio de trabajo igual en espacio al arreglo original.

- Para nmeros triangulares, factoriales, anagramas y bsqueda binaria, el mtodo recursivo


contiene solo una llamada a s mismo (Se muestran dos en el cdigo para la bsqueda binaria,
pero solo uno es usado en cualquier paso dado a travs del cdigo del mtodo).

- Para las torres de hanoi y mtodo de mezcla, el mtodo contiene dos llamadas a si mismo.

- Cualquier operacin que pueda ser llevada a cabo con recursin, puede ser llevada a cabo con
una pila.

- Una ejecucin recursiva puede ser ineficiente, ya que algunas veces puede ser reemplazada por
un ciclo simple o una pila.

Preguntas de recursin

1.- S el usuario ingresa 10 en el programa del numero triangular, cual es el mximo nmero de
copias del mtodo triangulo() (solo copias de su parmetro) que existen?

R: 10.

2.- Donde son almacenadas las copias del parmetro mencionadas en la pregunta 1?

a) En una variable del mtodo triangulo();

b) En un campo de la clase TrianguloApp

c) En una variable del mtodo getString()

d) En una pila.

3.- Asume que el usuario ingresa 10 como en la pregunta 1. Cul es el valor de n cuando el
mtodo triangulo() primero retorna 1?

R: 2.

4.- Asume la misma situacin de la pregunta 1. Cul es el valor de n cuando el mtodo triangulo()
es retornado al main()?

R: 10.
5.- Verdadero o Falso: En el mtodo triangulo(), los valores retornados son almacenados en una
pila. (Falso).

6.- En el programa del anagrama. En cierta profundidad de la recursin, una versin del mtodo
hacerAnagrama est trabajando con el string "led". Cuando este mtodo llama a una nueva
versin de si mismo, con que letras va a estar trabajando la nueva versin?

R: "ed".

7.- Hemos visto que la recursin puede tomar el lugar de un ciclo, como en el ciclo orientado del
programa del arreglo ordenado y la bsqueda binaria recursiva. Cul de las siguientes no es
verdadera?

a) Ambos programas dividen el rango repetidamente a la mitad.

b) Si el valor no es encontrado, la versin del ciclo retorna porque se sale del rango, pero la
versin recursiva porque alcanza el fondo del nivel de recursin.

c) Si el valor es encontrado, la versin del ciclo retorna desde el mtodo completo, donde la
versin recursiva regresa solo desde un nivel de recursin.

d) En la versin recursiva el rango a ser buscado debe ser especificado en los argumentos,
mientras que en la versin con ciclo no lo necesita.

8) En el mtodo recFind() (buscar recursivo) de la bsqueda binaria, qu cosa toma el lugar del
ciclo en una versin no recursiva?

a) El mtodo recFind() (buscar recursivo).

b) Los parmetros para recFind().

c) Las llamadas recursivas a recFind()

d) La llamada desde el main() a recFind().

9.- El programa de la bsqueda binaria es un ejemplo de "divide y vencers" que se alcanza para
resolver un problema.

10.- Que se vuelve ms pequeo cuando haces llamadas recursivas repetitivas en el mtodo
recFind()?

R: El rango de celdas a buscar.

11.- Que se vuelve ms pequeo con llamadas recursivas repetitivas en el programa de las torres
de hanoi?
R: El numero de discos a transferir.

12.- El algoritmo de las torres de hanoi involucra:

a) "Arboles" que son dispositivos de almacenamiento de datos.

b) Poner secretamente pequeos discos bajo discos ms grandes.

c) Cambiar las columnas que son de origen y destino.

d) Mover un disco pequeo y luego una pila de discos ms grandes.

13.- Que no es cierto acerca del mtodo de mezcla (mergesort)

a) Su algoritmo puede manejar arreglos de distintos tamaos.

b) Debe buscar el arreglo objetivo para encontrar donde poner el siguiente elemento.

c) No es recursivo.

d) Continuamente toma el elemento ms pequeo sin importar en que arreglo est.

14.- La desventaja del mergesort es que:

a) No es recursivo.

b) Usa ms memoria.

c) Aunque es ms rpido que el mtodo de insercin, es mucho ms lento que el quicksort.

d) Es complicado de implementar.

15.- Adems de un ciclo, una pila puede ser usada a menudo en lugar de una recursin.

Resumen Ordenamiento avanzado

- El shellsort aplica la insercin a elementos espaciosos, luego a elementos menos espaciosos y as.

- La expresin n-ordenamiento significa ordenar cada n-simo elemento.

- Una secuencia de nmeros, llamada intervalo de secuencias, o intervalo de espacio, es usado


para determinar el intervalo de orden en el shellsort.

- Un intervalo de secuencia ampliamente usado es generado por la expresin recursiva h = 3*h+1,


donde el valor inicial de h es 1.

- Si un arreglo almacena 1000 elementos, puede ser 364-ordenado, 121-ordenado, 40-ordenado,


13-ordenado, 4-ordenado, y finalmente 1-ordenado.
- El shellsort es difcil de analizar, pero se ejecuta en un tiempo aproximado de O(N*(logN)2). Este
es mucho ms rpido que los algoritmos O(N2) como insercin, pero ms lentos que los algoritmos
O(N*logN) como el quicksort.

- Particionar un arreglo, es dividirlo en dos sub-arreglos, uno que mantiene a los valores menores
al especificado, mientras que el otro mantiene a los valores mayores o iguales que el valor
especificado.

- El valor del pivote es el valor que determina dentro de que grupo ir un elemento durante el
particionamiento. Los elementos ms pequeos que el pivote irn al grupo de la izquierda, y los
mayores irn al grupo de la derecha.

- En el algoritmo de particionamiento, dos ndices de arreglos, cada uno en su propio ciclo,


empieza en los trminos opuestos del arreglo y avanzan cada uno, buscando elementos que
necesitan ser intercambiados.

- Cuando un ndice encuentra un elemento que necesita ser intercambiado, su ciclo while existe.

- Cuando ambos ciclos while terminan, los elementos estn intercambiados.

- Cuando ambos ciclos while terminan, y los ndices se han encontrado o han pasado cada uno del
otro, la particin est completa.

- El particionamiento opera en tiempo lineal O(N), haciendo N + 1 o N+2 comparaciones y menos


de N/2 intercambios.

- El algoritmo de particionamiento puede requerir pruebas extra en su ciclo while ms interno para
prevenir que los ndices salgan del trmino del arreglo.

- El quicksort particiona un arreglo y luego se llama a si mismo dos veces recursivamente para
ordenar los dos sub-arreglos resultantes.

- Los sub-arreglos de un elemento ya estn ordenados; esto puede ser un caso base para el
quicksort.

- El valor del pivote para una particin en quicksort es el valor especifico de un elemento, llamado
pivote.

- En una versin simple del quicksort, el pivote siempre puede ser el tem del extremo derecho del
sub-arreglo.

- Durante la particin, el pivote es apartado en la derecha y no es involucrado en el proceso de


particionamiento.

- Ms tarde, el pivote es intercambiado de nuevo, en el espacio entre las dos particiones. Est es
su posicin final de ordenamiento.
- En la versin simple del quicksort, la ejecucin es solo O(N2) para datos ya ordenados (o
inversamente ordenados).

- En una versin ms avanzada del quicksort, el pivote puede ser la media del primero, ultimo y
central elemento en el sub-arreglo. Esto es llamado particionamiento media de tres.

- El particionamiento media de tres efectivamente elimina el problema de ejecucin O(N2) para


datos ya ordenados.

- En el particionamiento media de tres, el elemento de la izquierda, centro y derecha son


ordenados al mismo tiempo que la media es determinada.

- Este mtodo de ordenamiento elimina la necesidad la prueba en el ciclo while ms interno del
algoritmo de particionamiento.

- El quicksort opera en tiempo O(N*log2 N) (excepto cuando la versin ms simple es aplicada a


datos que ya estn ordenados).

- Los sub-arreglos ms pequeos que un cierto tamao pueden ser ordenados por otro mtodo
distinto al quicksort.

- El mtodo de insercin es comnmente usado para ordenar sub-arreglos ms pequeos.

- El mtodo de insercin tambin puede ser aplicado al arreglo entero, despus de que haya sido
ordenado por un quicksort.

- El mtodo radix es casi tan rpido como el quicksort pero usa el doble de memoria.

Preguntas ordenamiento avanzado

1.- El shellsort trabaja:

a) Particionando el arreglo.

b) Intercambiando elementos adyacentes.

c) Tratando con elementos ampliamente separados.

d) Empezando con el mtodo normal de insercin.

2.- Si un arreglo tiene 100 elementos, entonces el algoritmo de Knuth empezara con un intervalo
de 40.
3.- Para transformar el mtodo de insercin a shellsort, Que no haras?

a) Sustituir h por 1.

b) Insertar un algoritmo para crear intervalos de ancho decrecientes.

c) Encerrar el mtodo normal de insercin en un ciclo.

d) Cambiar los ndices de direccin en el ciclo ms interno.

4.- Verdadero o Falso: Un buen intervalo de secuencia para el shellsort es creado dividiendo
repetidamente el arreglo a la mitad. (Falso).

5.- En los valores del Big O: La velocidad del shellsort es mayor que O(N*logN), pero menor que
O(N2).

6.- Particionamiento es:

a) Poner todos los elementos mayores a cierto valor en un extremo del arreglo.

b) Dividir el arreglo a la mitad.

c) Ordenar parcialmente partes del arreglo.

d) Ordenar cada mitad del arreglo separadamente.

7.- Cuando se particiona, cada elemento del arreglo es comparado con el Pivote.

8.- En el particionamiento, si un elemento del arreglo es igual a la respuesta de la pregunta 7

a) Es pasado de largo.

b) Es pasado de largo o no, dependiendo de otro elemento del arreglo.

c) Es puesto en la posicin del pivote.

d) Es intercambiado.

9.- Verdadero o Falso: En el quicksort, el pivote puede ser un elemento arbitrario del arreglo.

(Verdadero)

10.- Asumiendo que los valores ms grandes estn a la derecha, la particin es:

a) El elemento entre el sub-arreglo izquierdo y derecho.

b) El valor del elemento entre el sub-arreglo izquierdo y derecho.

c) El elemento izquierdo en el sub-arreglo derecho.


d) El valor del elemento izquierdo en el sub-arreglo derecho.

11.- El quicksort involucra particionar el arreglo original y luego particionar los sub-arreglos
resultantes.

12.- Despus de una particin en una versin simple del quicksort, el pivote puede ser:

a) Usado para encontrar la media del arreglo.

b) Intercambiado con un elemento del sub-arreglo derecho.

c) Usado como el punto de partida de la siguiente particin.

d) Descartado.

13.- El particionamiento por media de tres es una manera de elegir el Pivote.

14.- En el quicksort, para un arreglo de n elementos, el mtodo partitionlt() examinar cada


elemento aproximadamente log 2N veces.

15.- Verdadero o Falso: Puedes apresurar el quicksort si detienes el particionamiento cuando el


tamao de la particin es 5 y terminar usando un mtodo distinto de ordenamiento.(Verdadero).

You might also like