SlideShare a Scribd company logo
1 of 31
Estructura de datos
Unidad 2 recursividad 
 Es una alternativa diferente para implementar estructuras de repetición (ciclos). 
 Un ejemplo es con la serie Fibonacci 
int fibonacci(int num){ 
if (num == 1) { 
return 1; 
} 
else if (num == 0){ 
return 0; 
} 
else { 
return fibonacci(num - 1) + fibonacci(num - 2); 
} 
En conclusión es que un programa solicite su propia ejecución en el curso de su desarrollo.
Unidad 3 
Estructuras lineales
Pilas 
Una pila, es una estructura de datos en la que el último elemento en entrar es 
el primero en salir, por lo que también se denominan estructuras LIFO (Last In, 
First Out) o también estructuras lineales con una política UEPS (Ultimo en 
entrar, primero en salir). 
En esta estructura sólo se tiene acceso a la cabeza o cima de la pila, también 
solo se pueden insertar elementos en la pila cuando esta tiene espacio y solo 
se pueden extraer elementos de la pila cuando tenga valores
Las operaciones básicas en una pila son push y pop 
· - Push permite insertar un elemento a la pila 
· - Pop extrae un elemento de la pila 
La forma de implementar una pila es a través de: 
· - Por medio de un arreglo unidimensional 
· - A través de la clase Stack de la java.util.* 
· - Con una lista de elementos. 
Pilas a través de la clase Stack. 
Stack (Pila) es una subclase de Vector que implementa una pila estándar; ultimo en entrar, primero en salir. 
Stack solo define el constructor por defecto, que crea una pila vacía. Stack incluye todos los métodos definidos por vector 
y añade varios métodos propios:
colas 
 Una cola, es una estructura de datos lineal que permite almacenar elementos por un 
extremo y extraerlos por el otro. Por tal motivo, es una estructura FIFO 
 Al igual que en las pilas, se debe tener el control de la cola, tomando en cuenta de que 
si se quiere extraer un elemento de la cola se debe asegurar de que no esté vacía, o si 
se quiere insertar un elemento se debe asegurar de que la cola no esté llena, estas 
dos acciones se deben desarrollar al hacer operaciones con una cola. Las operaciones 
que aplican a una cola son: 
 - Crear una cola. 
 - Revisar si la cola está vacía. 
 - Revisar si la cola está llena. 
 - Insertar un elemento en la cola. 
 - Extraer un elemento de la cola. 
 - Revisar cuál es el siguiente elemento en la cola.
Listas enlazadas 
 Es un tipo de dato estructurado y es una colección de objetos sin tamaño 
predefinido, que tiene un inicio y un final, el inicio es un apuntador que 
indica que elemento comienza la lista y cuál es el siguiente hasta el final 
de la lista el cual apunta a nulo, los objetos que contienen la lista son 
llamados nodos 
 El nodo contiene un dato y un apuntador al siguiente nodo o a null en 
caso de ser el ultimo nodo
 Las listas enlazadas son estructuras dinámicas que se utilizan para almacenar datos que están 
cambiando constante mente. A diferencia de los vectores, las estructuras dinámicas se expanden y 
se contraen haciéndolas más flexibles a la hora de añadir o eliminar información. 
Las listas enlazadas permiten almacenar información en posiciones de memoria que no sean 
contiguas; para almacenar la información contienen elementos llamados nodos. Estos nodos 
poseen dos campos uno para almacenar la información o valor del elemento y otro para el enlace 
que determina la posición del siguiente elemento o nodo de la lista. 
Lo más recomendable y flexible para la creación de un nodo es utilizar un objeto por cada nodo, 
para ello debe comprender cuatro conceptos fundamentales que son: 
- Clase auto-referenciada, 
- Nodo, 
- Campo de enlace y 
- Enlace 
 Una clase auto-referenciada es una clase con al menos un campo cuyo tipo de referencia es el 
nombre de la misma clase. 
public clase Nodo 
{ 
Object elemento; 
Nodo siguiente; 
//métodos 
}
 Las listas enlazadas se dividen en: 
 - Listas enlazadas simples (con una sola dirección) y 
 - Listas enlazadas dobles (con dos direcciones). 
 Simples 
Una lista enlazada simple es una colección de nodos que tienen una sola dirección y que 
en conjunto forman una estructura de datos lineal. Cada nodo es un objeto compuesto que 
guarda una referencia a un elemento (dato) y una referencia a otro nodo (dirección). 
La referencia que guarda un nodo a otro nodo se puede considerar un enlace o un puntero 
hacia el segundo nodo y el salto que los relaciona recibe el nombre de salto de enlace o 
salto de puntero. El primer nodo de una lista recibe el nombre de cabeza, cabecera o 
primero y el último es llamado final, cola o último (es el único nodo con la referencia a otro 
objeto como nula). 
Un nodo de una lista enlazada simple puede determinar quien se encuentra después de él 
pero no puede determinar quien se encuentra antes, ya que solo cuenta con la dirección 
del nodo siguiente pero no del anterior. 
cabeza final
 Dobles. 
 Una lista enlazada doble es una colección de nodos que cuentan con dos 
direcciones en cada uno de sus nodos y que en conjunto forman una estructura de 
datos lineal. Cada nodo es un objeto compuesto que guarda una referencia a un 
elemento (dato), una referencia al nodo anterior (dirección predecesora) y una 
referencia al nodo siguiente (dirección sucesora). 
Un nodo de una lista enlazada doble puede determinar quien se encuentra 
después de él y quien se encuentra antes de él, ya que cuenta con las direcciones 
de los nodos siguiente y anterior. 
Operaciones 
Inserción (Al final del la lista, al inicio de la lista y en cierta posición de la lista) 
Recorrido (Por el inicio y por el final) 
Eliminación (Del inicio de la lista, del final de la lista y de cierta posición de la lista).
Conclusión 
 La lista enlazada es una herramienta muy importante en la estructura de datos ya 
que nos permite almacenar datos de una forma organizada, pero, a diferencia de 
estos, esta estructura es dinámica, en una lista enlazada , cada elemento apunta 
al siguiente excepto el ultimo que no tiene sucesor y el valor del enlace es null 
suelen recibir también el nombre de nodos de la lista
Unidad 4 
estructuras no lineales 
ARBOLES 
Un árbol es una estructura de datos homogénea, dinámica y no lineal, en la 
que cada nodo (elemento) 
puede tener varios nodos posteriores, pero solo puede tener un nodo anterior 
 Un árbol es dinámico porque su estructura puede cambiar durante la 
ejecución de un programa. Y no lineal, ya que cada nodo del árbol 
puede contener varios nodos que dependan de él.
Clasificacion de árboles 
Los árboles se clasifican de la siguiente manera: 
- Árboles binarios. 
o Distintos 
o Similares 
o Equivalentes 
o Equilibrado 
o completo 
- Árboles Multicaminos. 
o B 
o B+ 
o B* 
o R 
o 2-4
Operaciones Básicas sobre árboles binarios. 
 1-Creación de un árbol 
public class nodob 
{ 
object elemento; 
nodob padre, izquierdo, derecho; 
//métodos 
} 
2-inserción de un nodo árbol 
permite agregar un nuevo nodo hoja al árbol, pero antes de agregarlo, debemos 
tomar en cuenta como se hace el acomodo u organización de los nodos dentro de 
la estructura del árbol. el primer nodo que entra en el árbol se le conoce como 
nodo raíz, del cual se desprendes los nodos intermedio y hojas.
3-Eliminación de un nodo. 
la operación de eliminación de un nodo consiste en borrar el nodo del árbol binario de una forma definitiva, para este 
proceso la relación del nodo que se quiere eliminar con otros nodos debe desaparecer, pero que sucede con los nodos 
que dependen del nodo que se quiere eliminar. para esto analizaremos los tres casos de eliminación en un árbol 
binario: 
4- recorrido del árbol. 
Recorrer significa visitar cada uno de los nodos de un árbol exactamente una sola vez, este proceso puede 
interpretarse como poner todos los nodos en una línea o linealizar el árbol. 
existen tres formas de efectuar el recorrido y todas son de manera recursiva: 
a) recorrido en preorden 
· visitar la raíz 
· recorrer el subárbol izquierdo 
· recorrer el subárbol derecho 
b) recorrido en inorden 
· recorrer el subárbol izquierdo 
· visitar la raíz 
· recorrer el subárbol derecho 
c) recorrido en postorden 
· recorrer el subárbol izquierdo 
· recorrer el subárbol derecho 
· visitar la raíz 
Recorrido Preorden: 
34,10,25,56,46,82 
Recorrido Inorden: 
10,25,34,46,56,82 
Recorrido Postorden: 
25,10,46,82,56,34
5- balanceo del árbol 
Un árbol binario se encuentra balanceado si la diferencia en la altura de los dos 
subárboles de cualquier nodo en el árbol es cero o uno 
El árbol izquierdo se encuentra balanceado ya que la diferencia en la altura entre 
sus dos 
subárboles (izquierdo y derecho) es 1. En cambo el árbol de la derecha no se 
encuentra balanceado ya que la diferencia en la altura entre sus dos subárboles es 
2. 
APLICACIONES 
Un árbol es una estructura de datos útil cunado se trata de hacer modelos de procesos en donde 
se requiere tomar decisiones en uno de dos sentidos en cada parte del proceso. Por ejemplo, 
supongamos que tenemos un arreglo en donde queremos encontrar todos los duplicados. Esta 
situación es bastante útil en el manejo de las bases de datos, para evitar un problema que se llama 
redundancia 
• Si el elemento del arreglo es igual que la información del nodo raíz, entonces notificar duplicidad 
• Si el elemento del arreglo es menor que la información del nodo raíz entonces se crea un hijo 
izquierdo 
• Si el elemento del arreglo es mayor que la información del nodo raíz, entonces se crea un hijo 
derecho
Conclusión 
 un árbol binario se define como un conjunto finito de elementos llamados nodos. 
los nodos de un árbol; y que un árbol puede ser implementado fácilmente en una 
computadora. es bueno hacer énfasis en 
esto ya que entre las cosas que podemos mencionar se encuentra la raíz, los 
nodos de un árbol y la diferencia entre nodos sucesores y nodos terminales, como 
se muestran en el contenido del trabajo.
Unidad 5 
métodos de ordenamiento 
 ordenamiento interno 
ordenar significa reagrupar o reorganizar un conjunto de datos u objetos 
en una secuencia especifica, la cual puede ser de dos formas distintas: 
- ascendente (menor a mayor) o 
- descendente (mayor a menor). 
la ordenación interna o de arreglos, recibe este nombre ya que los elementos o 
componentes del arreglo se encuentran en la memoria principal de la 
computadora. 
los métodos de ordenación interna a su vez se clasifican en: 
- métodos directos (n2) y 
- métodos logarítmicos (n * log n).
Método burbuja 
 Es el más simple y consiste en comparar dos elementos adyacentes para determinar si se realiza 
un intercambio entre los mismos, esto en caso de que el primero sea mayor que el segundo (forma 
ascendente) o el caso de que el primero sea menor que el segundo (forma descendente). 
el primer procedimiento del método de la burbuja es: 
1-generar un ciclo que inicie desde uno hasta el número de elementos del arreglo. 
generar un segundo ciclo dentro del anterior que inicie desde cero hasta el número de elementos 
del arreglo menos dos. 
2-dentro del segundo ciclo debe existir una comparación que determina el tipo de ordenamiento 
(ascendente o descendente) entre el primer elemento (posición generado por el segundo ciclo) y el 
segundo elemento (el que le sigue), si la respuesta a la condición es verdadera se realiza un 
intercambio entre los dos elementos. 
3-para realizar el intercambio se genera un almacenamiento temporal, el cual guarda el dato del 
primer elemento, el segundo elemento toma el lugar del primero y en el lugar del segundo se 
coloca lo que contiene el almacenamiento temporal.
Quicksort 
 es una técnica basada en otra conocida con el nombre divide y vencerás, que permite ordenar una 
cantidad de elementos en un tiempo proporcional a n2 en el peor de los casos o a n log n en el 
mejor de los casos. El algoritmo original es recursivo, como la técnica en la que se basa. 
 La descripción del algoritmo para el método de ordenamiento quicksort es la siguiente: 
1-Debe elegir uno de los elementos del arreglo al que llamaremos pivote. 
2-Debe acomodar los elementos del arreglo a cada lado del pivote, de manera que del lado izquierdo 
queden todos los menores al pivote y del lado derecho los mayores al pivote; considere que en este 
momento, el pivote ocupa exactamente el lugar que le corresponderá en el arreglo ordenado. 
3-Colocado el pivote en su lugar, el arreglo queda separado en dos subarreglos, uno formado por los 
elementos del lado izquierdo del pivote, y otro por los elementos del lado derecho del pivote. 
4-Repetir este proceso de forma recursiva para cada subarreglo mientras éstos contengan más de un 
elemento. Una vez terminado este proceso todos los elementos estarán ordenados
Shellsort 
Es una técnica basada en otra conocida con el nombre divide y vencerás, que permite ordenar una 
cantidad de elementos en un tiempo proporcional a n2 en el peor de los casos o a n log n en el mejor 
de los casos. El algoritmo original es recursivo, como la técnica en la que se basa. 
La descripción del algoritmo para el método de ordenamiento quicksort es la siguiente: 
1-Debe elegir uno de los elementos del arreglo al que llamaremos pivote. 
2-Debe acomodar los elementos del arreglo a cada lado del pivote, de manera que del lado izquierdo 
queden todos los menores al pivote y del lado derecho los mayores al pivote; considere que en este 
momento, el pivote ocupa exactamente el lugar que le corresponderá en el arreglo ordenado. 
3-Colocado el pivote en su lugar, el arreglo queda separado en dos subarreglos, uno formado por los 
elementos del lado izquierdo del pivote, y otro por los elementos del lado derecho del pivote. 
4-Repetir este proceso de forma recursiva para cada subarreglo mientras éstos contengan más de un 
elemento. Una vez terminado este proceso todos los elementos estarán ordenados
Radix 
El método de ordenación radix es un algoritmo que ordena datos procesando sus elementos de forma 
individual, según la posición que ocupan dentro del dato. Los datos numéricos los por dígitos y los datos 
alfabéticos por letras. 
El método radix se clasifica en dos tipos según el orden en el que procesan los datos: 
- De derecha a izquierda y 
- De izquierda a derecha. 
Si aplicamos este método solo a enteros, el método se clasificaría de la siguiente manera: 
- El digito menos significativo (LSD, Least Significat Digit) y 
- El digito más significativo (MSD, More Significat Digit). 
El radix LSD procesa los enteros iniciando por el digito menos significativo y moviéndose al digito más 
significativo (de derecha a izquierda). 
El radix MSD procesa los enteros iniciando por el digito más significativo y moviéndose al digito menos 
significativo (de izquierda a derecha).
Ordenación externa 
La ordenación externa o de archivos, recibe este nombre ya que los elementos se encuentran almacenados en un 
archivo, el cual se almacena en un dispositivo de almacenamiento secundario o externo. 
Los algoritmos de ordenación externa son necesarios cuando los datos que se quiere ordenar no cabe en la memoria 
principal (RAM) de la computadora y por tal motivo se encuentran almacenados en un dispositivo secundario externo 
(el disco duro, cinta, memoria USB, etc.). La mayoría de estos algoritmos utilizan la técnica de divide y vencerás y la 
intercalación de archivos, para aplicar el ordenamiento. 
Intercalación 
Por intercalación de archivos se entiende la unión o fusión de dos o más archivos, previamente ordenados, en un solo 
archivo, el cual debe quedar ordenado al hacer la intercalación. 
La intercalación directa o mezcla directa es un algoritmo de ordenación externa, que permite organizar los elementos 
de un archivo, de forma ascendente o descendente. 
La idea centrar de este algoritmo consiste en realizar de forma sucesiva una partición y una fusión que produce 
secuencias ordenadas de longitud cada vez mayor. En la primera pasada la partición es de longitud 1 y la fusión 
produce secuencias ordenadas de longitud 2. En la segunda pasada la partición es de longitud 2 y la fusión produce 
secuencias ordenadas de longitud 4. Este proceso se repite hasta que la longitud de la partición sea menor o igual al 
número de elementos del archivo original.
Conclusión 
 Los métodos de ordenamiento, valga la redundancia, nos permiten ordenar de 
manera rápida una colección de datos facilitando la tarea de buscar un dato en 
cuanto es requerido, unos ejemplos ya vistos son el método burbuja el cual tiene 
función de ordenar los valores de menor a mayor y Quicksort que es el método 
mas rápido para ordenar algún valor utilizando pivotes
Unidad 6 
métodos de búsqueda 
Los métodos de búsqueda nos permiten recuperar datos previamente almacenados. El resultado de 
una búsqueda puede ser un éxito, si se encuentra la información o un fracaso, si no la encuentra. 
La búsqueda se puede aplicar sobre elementos previamente ordenados o sobre elementos 
desordenados, se trata de encontrar una cantidad de elementos similares. 
Los métodos de búsqueda se clasifican en: 
- Búsqueda interna. 
- Búsqueda externa. 
Búsqueda interna. 
La búsqueda interna es aquella en la que todos los elementos de la estructura estática (arreglo) o 
dinámica (lista ligada o árbol) se encuentran almacenados en la memoria principal de la computadora. 
Los métodos de búsqueda interna más importantes son: 
- Secuencial o lineal. 
- Binaria. 
- Hash (transformación de claves)
 Secuencial. 
El método de búsqueda secuencial consiste en revisar la estructura de datos 
elemento por elemento hasta encontrar el dato que estamos buscando, o hasta llegar 
al final de la estructura de datos. 
 Binaria. 
El método de búsqueda binaria divide el total de los elementos en dos, comparando 
el elemento buscado con el central, en caso de no ser iguales, se determina si el 
elemento buscado es menor o mayor al central, para determinar si la búsqueda 
continua del lado izquierdo (menor) o derecho (mayor) del central, repitiendo el 
mismo proceso de división y comparación, hasta encontrar el elemento buscado o 
que la división ya no sea posible. 
Ejemplo. Si tenemos una estructura ordenada 0, 1, 2, 3, 5, 5, 5, 7, 8, 9 y estamos 
buscando el número 5, el resultado de la búsqueda nos mostraría la posicione 
4 y el proceso terminaría ya que el elemento buscado no es diferente al que esta en 
la posición central.
hash 
 El método de búsqueda hash o por transformación de clave aumenta la velocidad de búsqueda sin 
necesidad de que los elementos estén previamente ordenados, comparándolo con los métodos 
anteriores. Además tiene la ventaja de que el tiempo de búsqueda es independiente del número de 
elementos de la estructura que los almacena. 
Este método permite que el acceso a los datos sea por una llave que indica directamente la 
posición donde están guardados los datos que se buscan. Prácticamente trabaja con una función 
que transforma la llave o dato clave en una dirección (índice) dentro de la estructura y que en 
ocasiones puede generar una colisión, que se define como una misma dirección para dos o más 
claves distintas. 
 Ejemplo. Si tenemos un total de 100 elementos y dos claves que sean 7259 y 9359, las 
direcciones generadas son las siguientes: 
La función módulo o por división 
dirección = (clave % total elementos) 
dirección = (7259%100) = 59 
dirección = (9359%100) = 59 
dirección = (7259%97) = 81 
dirección = (9359%97) = 47
Conclusión 
 Los métodos de búsqueda de dato son herramientas que facilitan al 
programador y usuario el buscar pronta y efectivamente datos 
previamente ordenados para algún uso en particular
Unidad 7 
Análisis de los algoritmos 
Análisis de algoritmo 
Un algoritmo es una secuencia de pasos lógica para encontrar la solución de un problema. 
Todo algoritmo debe contar con las siguientes características: preciso, definido y finito. Por Preciso, entenderemos que cada 
paso del algoritmo tiene una relación con el anterior y el siguiente; un algoritmo es Definido, cuando se ejecuta más de una vez 
con los mismos datos y el resultado es el mismo; y Finito, indica que el algoritmo cuenta con una serie de pasos definidos o que 
tiene un fin. 
 Complejidad Tiempo de ejecución de un algoritmo 
El tiempo de ejecución de un algoritmo, se refiere a la suma de los tiempos en los que el programa tarda en ejecutar una a una 
todas sus instrucciones, tomando en cuanta que cada instrucción requiere una unidad de tiempo, dicho tiempo se puede calcular 
en función de n (el numero de datos), lo que se denomina T(n) 
Asignación de un valor a una variable. 
- Llamada a un método. 
- Ejecución de una operación aritmética. 
- Comparar dos números. 
- Poner índices a un arreglo. 
- Seguir una referencia de objeto. 
- Retorno de un método.
public int Mayor() 
{ 
int may=arr[0]; 
for(ind=0; ind<arr.length; ind++) 
if(arr[ind]>may) 
may=arr[ind]; 
return may; 
} 
Para este ejemplo se pueden encontrar dos formulas que determinen el tiempo de ejecución, la primera representa el 
peor de los casos y la segunda el mejor de los casos. 
 Complejidad en espacio 
La complejidad de espacio, se refiere a la memoria que utiliza un programa para su ejecución; es decir el espacio de 
memoria que ocupan todas las variables propias del programa. Dicha memoria se divide en Memoria estática y Memoria 
dinámica. 
Tipo de dato 
primitivo 
Tamaño en bits Tamaño en 
Bytes 
byte 
char 
short 
int 
float 
long 
double 
8 
16 
16 
32 
32 
64 
64 
1 
2 
2 
4 
4 
8 
8
Conclusión 
 El análisis de algoritmos se trata de buscar la mejor solución de entre varios 
algoritmos para cierto problema o meta al cual llegar de forma eficiente y 
con menos recursos posibles

More Related Content

What's hot

Normalización de Base de Datos
Normalización de Base de DatosNormalización de Base de Datos
Normalización de Base de DatosVannesa Salazar
 
Programación Orientada a Objetos - Resumen
Programación Orientada a Objetos - ResumenProgramación Orientada a Objetos - Resumen
Programación Orientada a Objetos - ResumenKarlytoz_36
 
Estructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamientoEstructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamientoJosé Antonio Sandoval Acosta
 
Algebra relacional
Algebra relacionalAlgebra relacional
Algebra relacionalLuis Jherry
 
Notación infija postfija
Notación infija postfijaNotación infija postfija
Notación infija postfijaOmarzingm
 
2. Casos de uso y diagramas de casos de uso
2. Casos de uso y diagramas de casos de uso2. Casos de uso y diagramas de casos de uso
2. Casos de uso y diagramas de casos de usoSaul Mamani
 
Métodos de Búsquedas en Inteligencia Artificial
Métodos de Búsquedas en Inteligencia ArtificialMétodos de Búsquedas en Inteligencia Artificial
Métodos de Búsquedas en Inteligencia ArtificialGregorys Gimenez
 
Arboles - estructura de datos
Arboles - estructura de datos Arboles - estructura de datos
Arboles - estructura de datos Kaneki04
 
Normalización de la base de datos (3 formas normales)
Normalización de la base de datos (3 formas normales)Normalización de la base de datos (3 formas normales)
Normalización de la base de datos (3 formas normales)michell_quitian
 
Método de Búsqueda Hash
Método de Búsqueda HashMétodo de Búsqueda Hash
Método de Búsqueda HashBlanca Parra
 
Arboles mate discreta
Arboles mate discretaArboles mate discreta
Arboles mate discretaJunior Soto
 
Ordenamientos burbuja e inserción
Ordenamientos burbuja e inserciónOrdenamientos burbuja e inserción
Ordenamientos burbuja e inserciónAlvaro Enrique Ruano
 
Metodos de ordenacion radix sort
Metodos de ordenacion radix sortMetodos de ordenacion radix sort
Metodos de ordenacion radix sorttephyfree
 

What's hot (20)

Normalización de Base de Datos
Normalización de Base de DatosNormalización de Base de Datos
Normalización de Base de Datos
 
Aplicaciones de los árboles y grafos
Aplicaciones de los árboles y grafosAplicaciones de los árboles y grafos
Aplicaciones de los árboles y grafos
 
Programación Orientada a Objetos - Resumen
Programación Orientada a Objetos - ResumenProgramación Orientada a Objetos - Resumen
Programación Orientada a Objetos - Resumen
 
Estructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamientoEstructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamiento
 
Pilas y colas
Pilas y colasPilas y colas
Pilas y colas
 
Algebra relacional
Algebra relacionalAlgebra relacional
Algebra relacional
 
Notación infija postfija
Notación infija postfijaNotación infija postfija
Notación infija postfija
 
2. Casos de uso y diagramas de casos de uso
2. Casos de uso y diagramas de casos de uso2. Casos de uso y diagramas de casos de uso
2. Casos de uso y diagramas de casos de uso
 
Métodos de Búsquedas en Inteligencia Artificial
Métodos de Búsquedas en Inteligencia ArtificialMétodos de Búsquedas en Inteligencia Artificial
Métodos de Búsquedas en Inteligencia Artificial
 
Ejemplo dfd
Ejemplo dfdEjemplo dfd
Ejemplo dfd
 
Arboles - estructura de datos
Arboles - estructura de datos Arboles - estructura de datos
Arboles - estructura de datos
 
Normalización de la base de datos (3 formas normales)
Normalización de la base de datos (3 formas normales)Normalización de la base de datos (3 formas normales)
Normalización de la base de datos (3 formas normales)
 
Método de Búsqueda Hash
Método de Búsqueda HashMétodo de Búsqueda Hash
Método de Búsqueda Hash
 
Diagramas de estado
Diagramas de estadoDiagramas de estado
Diagramas de estado
 
Arboles mate discreta
Arboles mate discretaArboles mate discreta
Arboles mate discreta
 
Ordenamientos burbuja e inserción
Ordenamientos burbuja e inserciónOrdenamientos burbuja e inserción
Ordenamientos burbuja e inserción
 
Estructura de Datos - Unidad 6 Metodos de busqueda
Estructura de Datos - Unidad 6 Metodos de busquedaEstructura de Datos - Unidad 6 Metodos de busqueda
Estructura de Datos - Unidad 6 Metodos de busqueda
 
Casos de uso
Casos de usoCasos de uso
Casos de uso
 
Recursividad directa e indirecta
Recursividad directa e indirectaRecursividad directa e indirecta
Recursividad directa e indirecta
 
Metodos de ordenacion radix sort
Metodos de ordenacion radix sortMetodos de ordenacion radix sort
Metodos de ordenacion radix sort
 

Similar to Estructura de datos

Similar to Estructura de datos (20)

Unidad tres estructura de datos
Unidad tres estructura de datosUnidad tres estructura de datos
Unidad tres estructura de datos
 
Estructura de dato unidad 3
Estructura de dato unidad 3Estructura de dato unidad 3
Estructura de dato unidad 3
 
Unidad 3
Unidad 3Unidad 3
Unidad 3
 
Unidad 3
Unidad 3Unidad 3
Unidad 3
 
Estructura de datos evidencias
Estructura de datos evidenciasEstructura de datos evidencias
Estructura de datos evidencias
 
Unidad cuatro estructura de datos
Unidad cuatro estructura de datosUnidad cuatro estructura de datos
Unidad cuatro estructura de datos
 
Listas en C#
Listas en C#Listas en C#
Listas en C#
 
Listas c#
Listas c#Listas c#
Listas c#
 
Estructura de dato unidad 4
Estructura de dato unidad 4Estructura de dato unidad 4
Estructura de dato unidad 4
 
Estructuras de tados
Estructuras de tadosEstructuras de tados
Estructuras de tados
 
Estructuras lineales
Estructuras linealesEstructuras lineales
Estructuras lineales
 
Teoria de listas
Teoria de listasTeoria de listas
Teoria de listas
 
Listas
ListasListas
Listas
 
Programación 3: listas enlazadas
Programación 3: listas enlazadasProgramación 3: listas enlazadas
Programación 3: listas enlazadas
 
Ensayo implementacion listas
Ensayo implementacion listasEnsayo implementacion listas
Ensayo implementacion listas
 
Listas,pilas&colas yorka
Listas,pilas&colas yorkaListas,pilas&colas yorka
Listas,pilas&colas yorka
 
Listas,pilas y colas Estructura de Datos
Listas,pilas y colas Estructura de DatosListas,pilas y colas Estructura de Datos
Listas,pilas y colas Estructura de Datos
 
listas Luis Guarata 31332901.pdf
listas Luis Guarata 31332901.pdflistas Luis Guarata 31332901.pdf
listas Luis Guarata 31332901.pdf
 
Estructura de datos
Estructura de datosEstructura de datos
Estructura de datos
 
Estructura de datos
Estructura de datosEstructura de datos
Estructura de datos
 

More from René Sosa Arana

More from René Sosa Arana (10)

Unidad 7 informe técnico
Unidad 7 informe técnicoUnidad 7 informe técnico
Unidad 7 informe técnico
 
Unidad 6 informe tecnico
Unidad 6 informe tecnicoUnidad 6 informe tecnico
Unidad 6 informe tecnico
 
Unidad 5 informe técnico
Unidad 5 informe técnicoUnidad 5 informe técnico
Unidad 5 informe técnico
 
Unidad 4 informe técnico
Unidad  4 informe técnicoUnidad  4 informe técnico
Unidad 4 informe técnico
 
Unidad 3
Unidad 3Unidad 3
Unidad 3
 
Unidad 2 informe tecnico
Unidad 2 informe tecnicoUnidad 2 informe tecnico
Unidad 2 informe tecnico
 
Unidad siete estructura de datos
Unidad siete estructura de datosUnidad siete estructura de datos
Unidad siete estructura de datos
 
Unidad seis estructura de datos
Unidad seis estructura de datosUnidad seis estructura de datos
Unidad seis estructura de datos
 
Unidad cinco estructura de datos
Unidad cinco estructura de datosUnidad cinco estructura de datos
Unidad cinco estructura de datos
 
Unidad dos, estructura de datos
Unidad dos, estructura de datosUnidad dos, estructura de datos
Unidad dos, estructura de datos
 

Recently uploaded

Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdfDemetrio Ccesa Rayme
 
30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdfgimenanahuel
 
MAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMarjorie Burga
 
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxSEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxYadi Campos
 
Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.José Luis Palma
 
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxjosetrinidadchavez
 
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptxEXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptxPryhaSalam
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfAngélica Soledad Vega Ramírez
 
Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Lourdes Feria
 
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñoproyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñotapirjackluis
 
Ecosistemas Natural, Rural y urbano 2021.pptx
Ecosistemas Natural, Rural y urbano  2021.pptxEcosistemas Natural, Rural y urbano  2021.pptx
Ecosistemas Natural, Rural y urbano 2021.pptxolgakaterin
 
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAFORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAEl Fortí
 
Qué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaQué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaDecaunlz
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxlclcarmen
 
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdfDemetrio Ccesa Rayme
 
Informatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos BásicosInformatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos BásicosCesarFernandez937857
 

Recently uploaded (20)

Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdf
 
30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf
 
MAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grande
 
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxSEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
 
Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.
 
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
 
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptxEXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
 
Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...
 
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñoproyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
 
Power Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptxPower Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptx
 
Ecosistemas Natural, Rural y urbano 2021.pptx
Ecosistemas Natural, Rural y urbano  2021.pptxEcosistemas Natural, Rural y urbano  2021.pptx
Ecosistemas Natural, Rural y urbano 2021.pptx
 
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAFORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
 
Qué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaQué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativa
 
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdfTema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
 
Fe contra todo pronóstico. La fe es confianza.
Fe contra todo pronóstico. La fe es confianza.Fe contra todo pronóstico. La fe es confianza.
Fe contra todo pronóstico. La fe es confianza.
 
Medición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptxMedición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptx
 
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
 
Informatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos BásicosInformatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos Básicos
 

Estructura de datos

  • 2. Unidad 2 recursividad  Es una alternativa diferente para implementar estructuras de repetición (ciclos).  Un ejemplo es con la serie Fibonacci int fibonacci(int num){ if (num == 1) { return 1; } else if (num == 0){ return 0; } else { return fibonacci(num - 1) + fibonacci(num - 2); } En conclusión es que un programa solicite su propia ejecución en el curso de su desarrollo.
  • 4. Pilas Una pila, es una estructura de datos en la que el último elemento en entrar es el primero en salir, por lo que también se denominan estructuras LIFO (Last In, First Out) o también estructuras lineales con una política UEPS (Ultimo en entrar, primero en salir). En esta estructura sólo se tiene acceso a la cabeza o cima de la pila, también solo se pueden insertar elementos en la pila cuando esta tiene espacio y solo se pueden extraer elementos de la pila cuando tenga valores
  • 5. Las operaciones básicas en una pila son push y pop · - Push permite insertar un elemento a la pila · - Pop extrae un elemento de la pila La forma de implementar una pila es a través de: · - Por medio de un arreglo unidimensional · - A través de la clase Stack de la java.util.* · - Con una lista de elementos. Pilas a través de la clase Stack. Stack (Pila) es una subclase de Vector que implementa una pila estándar; ultimo en entrar, primero en salir. Stack solo define el constructor por defecto, que crea una pila vacía. Stack incluye todos los métodos definidos por vector y añade varios métodos propios:
  • 6. colas  Una cola, es una estructura de datos lineal que permite almacenar elementos por un extremo y extraerlos por el otro. Por tal motivo, es una estructura FIFO  Al igual que en las pilas, se debe tener el control de la cola, tomando en cuenta de que si se quiere extraer un elemento de la cola se debe asegurar de que no esté vacía, o si se quiere insertar un elemento se debe asegurar de que la cola no esté llena, estas dos acciones se deben desarrollar al hacer operaciones con una cola. Las operaciones que aplican a una cola son:  - Crear una cola.  - Revisar si la cola está vacía.  - Revisar si la cola está llena.  - Insertar un elemento en la cola.  - Extraer un elemento de la cola.  - Revisar cuál es el siguiente elemento en la cola.
  • 7. Listas enlazadas  Es un tipo de dato estructurado y es una colección de objetos sin tamaño predefinido, que tiene un inicio y un final, el inicio es un apuntador que indica que elemento comienza la lista y cuál es el siguiente hasta el final de la lista el cual apunta a nulo, los objetos que contienen la lista son llamados nodos  El nodo contiene un dato y un apuntador al siguiente nodo o a null en caso de ser el ultimo nodo
  • 8.  Las listas enlazadas son estructuras dinámicas que se utilizan para almacenar datos que están cambiando constante mente. A diferencia de los vectores, las estructuras dinámicas se expanden y se contraen haciéndolas más flexibles a la hora de añadir o eliminar información. Las listas enlazadas permiten almacenar información en posiciones de memoria que no sean contiguas; para almacenar la información contienen elementos llamados nodos. Estos nodos poseen dos campos uno para almacenar la información o valor del elemento y otro para el enlace que determina la posición del siguiente elemento o nodo de la lista. Lo más recomendable y flexible para la creación de un nodo es utilizar un objeto por cada nodo, para ello debe comprender cuatro conceptos fundamentales que son: - Clase auto-referenciada, - Nodo, - Campo de enlace y - Enlace  Una clase auto-referenciada es una clase con al menos un campo cuyo tipo de referencia es el nombre de la misma clase. public clase Nodo { Object elemento; Nodo siguiente; //métodos }
  • 9.  Las listas enlazadas se dividen en:  - Listas enlazadas simples (con una sola dirección) y  - Listas enlazadas dobles (con dos direcciones).  Simples Una lista enlazada simple es una colección de nodos que tienen una sola dirección y que en conjunto forman una estructura de datos lineal. Cada nodo es un objeto compuesto que guarda una referencia a un elemento (dato) y una referencia a otro nodo (dirección). La referencia que guarda un nodo a otro nodo se puede considerar un enlace o un puntero hacia el segundo nodo y el salto que los relaciona recibe el nombre de salto de enlace o salto de puntero. El primer nodo de una lista recibe el nombre de cabeza, cabecera o primero y el último es llamado final, cola o último (es el único nodo con la referencia a otro objeto como nula). Un nodo de una lista enlazada simple puede determinar quien se encuentra después de él pero no puede determinar quien se encuentra antes, ya que solo cuenta con la dirección del nodo siguiente pero no del anterior. cabeza final
  • 10.  Dobles.  Una lista enlazada doble es una colección de nodos que cuentan con dos direcciones en cada uno de sus nodos y que en conjunto forman una estructura de datos lineal. Cada nodo es un objeto compuesto que guarda una referencia a un elemento (dato), una referencia al nodo anterior (dirección predecesora) y una referencia al nodo siguiente (dirección sucesora). Un nodo de una lista enlazada doble puede determinar quien se encuentra después de él y quien se encuentra antes de él, ya que cuenta con las direcciones de los nodos siguiente y anterior. Operaciones Inserción (Al final del la lista, al inicio de la lista y en cierta posición de la lista) Recorrido (Por el inicio y por el final) Eliminación (Del inicio de la lista, del final de la lista y de cierta posición de la lista).
  • 11. Conclusión  La lista enlazada es una herramienta muy importante en la estructura de datos ya que nos permite almacenar datos de una forma organizada, pero, a diferencia de estos, esta estructura es dinámica, en una lista enlazada , cada elemento apunta al siguiente excepto el ultimo que no tiene sucesor y el valor del enlace es null suelen recibir también el nombre de nodos de la lista
  • 12. Unidad 4 estructuras no lineales ARBOLES Un árbol es una estructura de datos homogénea, dinámica y no lineal, en la que cada nodo (elemento) puede tener varios nodos posteriores, pero solo puede tener un nodo anterior  Un árbol es dinámico porque su estructura puede cambiar durante la ejecución de un programa. Y no lineal, ya que cada nodo del árbol puede contener varios nodos que dependan de él.
  • 13. Clasificacion de árboles Los árboles se clasifican de la siguiente manera: - Árboles binarios. o Distintos o Similares o Equivalentes o Equilibrado o completo - Árboles Multicaminos. o B o B+ o B* o R o 2-4
  • 14. Operaciones Básicas sobre árboles binarios.  1-Creación de un árbol public class nodob { object elemento; nodob padre, izquierdo, derecho; //métodos } 2-inserción de un nodo árbol permite agregar un nuevo nodo hoja al árbol, pero antes de agregarlo, debemos tomar en cuenta como se hace el acomodo u organización de los nodos dentro de la estructura del árbol. el primer nodo que entra en el árbol se le conoce como nodo raíz, del cual se desprendes los nodos intermedio y hojas.
  • 15. 3-Eliminación de un nodo. la operación de eliminación de un nodo consiste en borrar el nodo del árbol binario de una forma definitiva, para este proceso la relación del nodo que se quiere eliminar con otros nodos debe desaparecer, pero que sucede con los nodos que dependen del nodo que se quiere eliminar. para esto analizaremos los tres casos de eliminación en un árbol binario: 4- recorrido del árbol. Recorrer significa visitar cada uno de los nodos de un árbol exactamente una sola vez, este proceso puede interpretarse como poner todos los nodos en una línea o linealizar el árbol. existen tres formas de efectuar el recorrido y todas son de manera recursiva: a) recorrido en preorden · visitar la raíz · recorrer el subárbol izquierdo · recorrer el subárbol derecho b) recorrido en inorden · recorrer el subárbol izquierdo · visitar la raíz · recorrer el subárbol derecho c) recorrido en postorden · recorrer el subárbol izquierdo · recorrer el subárbol derecho · visitar la raíz Recorrido Preorden: 34,10,25,56,46,82 Recorrido Inorden: 10,25,34,46,56,82 Recorrido Postorden: 25,10,46,82,56,34
  • 16. 5- balanceo del árbol Un árbol binario se encuentra balanceado si la diferencia en la altura de los dos subárboles de cualquier nodo en el árbol es cero o uno El árbol izquierdo se encuentra balanceado ya que la diferencia en la altura entre sus dos subárboles (izquierdo y derecho) es 1. En cambo el árbol de la derecha no se encuentra balanceado ya que la diferencia en la altura entre sus dos subárboles es 2. APLICACIONES Un árbol es una estructura de datos útil cunado se trata de hacer modelos de procesos en donde se requiere tomar decisiones en uno de dos sentidos en cada parte del proceso. Por ejemplo, supongamos que tenemos un arreglo en donde queremos encontrar todos los duplicados. Esta situación es bastante útil en el manejo de las bases de datos, para evitar un problema que se llama redundancia • Si el elemento del arreglo es igual que la información del nodo raíz, entonces notificar duplicidad • Si el elemento del arreglo es menor que la información del nodo raíz entonces se crea un hijo izquierdo • Si el elemento del arreglo es mayor que la información del nodo raíz, entonces se crea un hijo derecho
  • 17. Conclusión  un árbol binario se define como un conjunto finito de elementos llamados nodos. los nodos de un árbol; y que un árbol puede ser implementado fácilmente en una computadora. es bueno hacer énfasis en esto ya que entre las cosas que podemos mencionar se encuentra la raíz, los nodos de un árbol y la diferencia entre nodos sucesores y nodos terminales, como se muestran en el contenido del trabajo.
  • 18. Unidad 5 métodos de ordenamiento  ordenamiento interno ordenar significa reagrupar o reorganizar un conjunto de datos u objetos en una secuencia especifica, la cual puede ser de dos formas distintas: - ascendente (menor a mayor) o - descendente (mayor a menor). la ordenación interna o de arreglos, recibe este nombre ya que los elementos o componentes del arreglo se encuentran en la memoria principal de la computadora. los métodos de ordenación interna a su vez se clasifican en: - métodos directos (n2) y - métodos logarítmicos (n * log n).
  • 19. Método burbuja  Es el más simple y consiste en comparar dos elementos adyacentes para determinar si se realiza un intercambio entre los mismos, esto en caso de que el primero sea mayor que el segundo (forma ascendente) o el caso de que el primero sea menor que el segundo (forma descendente). el primer procedimiento del método de la burbuja es: 1-generar un ciclo que inicie desde uno hasta el número de elementos del arreglo. generar un segundo ciclo dentro del anterior que inicie desde cero hasta el número de elementos del arreglo menos dos. 2-dentro del segundo ciclo debe existir una comparación que determina el tipo de ordenamiento (ascendente o descendente) entre el primer elemento (posición generado por el segundo ciclo) y el segundo elemento (el que le sigue), si la respuesta a la condición es verdadera se realiza un intercambio entre los dos elementos. 3-para realizar el intercambio se genera un almacenamiento temporal, el cual guarda el dato del primer elemento, el segundo elemento toma el lugar del primero y en el lugar del segundo se coloca lo que contiene el almacenamiento temporal.
  • 20. Quicksort  es una técnica basada en otra conocida con el nombre divide y vencerás, que permite ordenar una cantidad de elementos en un tiempo proporcional a n2 en el peor de los casos o a n log n en el mejor de los casos. El algoritmo original es recursivo, como la técnica en la que se basa.  La descripción del algoritmo para el método de ordenamiento quicksort es la siguiente: 1-Debe elegir uno de los elementos del arreglo al que llamaremos pivote. 2-Debe acomodar los elementos del arreglo a cada lado del pivote, de manera que del lado izquierdo queden todos los menores al pivote y del lado derecho los mayores al pivote; considere que en este momento, el pivote ocupa exactamente el lugar que le corresponderá en el arreglo ordenado. 3-Colocado el pivote en su lugar, el arreglo queda separado en dos subarreglos, uno formado por los elementos del lado izquierdo del pivote, y otro por los elementos del lado derecho del pivote. 4-Repetir este proceso de forma recursiva para cada subarreglo mientras éstos contengan más de un elemento. Una vez terminado este proceso todos los elementos estarán ordenados
  • 21. Shellsort Es una técnica basada en otra conocida con el nombre divide y vencerás, que permite ordenar una cantidad de elementos en un tiempo proporcional a n2 en el peor de los casos o a n log n en el mejor de los casos. El algoritmo original es recursivo, como la técnica en la que se basa. La descripción del algoritmo para el método de ordenamiento quicksort es la siguiente: 1-Debe elegir uno de los elementos del arreglo al que llamaremos pivote. 2-Debe acomodar los elementos del arreglo a cada lado del pivote, de manera que del lado izquierdo queden todos los menores al pivote y del lado derecho los mayores al pivote; considere que en este momento, el pivote ocupa exactamente el lugar que le corresponderá en el arreglo ordenado. 3-Colocado el pivote en su lugar, el arreglo queda separado en dos subarreglos, uno formado por los elementos del lado izquierdo del pivote, y otro por los elementos del lado derecho del pivote. 4-Repetir este proceso de forma recursiva para cada subarreglo mientras éstos contengan más de un elemento. Una vez terminado este proceso todos los elementos estarán ordenados
  • 22. Radix El método de ordenación radix es un algoritmo que ordena datos procesando sus elementos de forma individual, según la posición que ocupan dentro del dato. Los datos numéricos los por dígitos y los datos alfabéticos por letras. El método radix se clasifica en dos tipos según el orden en el que procesan los datos: - De derecha a izquierda y - De izquierda a derecha. Si aplicamos este método solo a enteros, el método se clasificaría de la siguiente manera: - El digito menos significativo (LSD, Least Significat Digit) y - El digito más significativo (MSD, More Significat Digit). El radix LSD procesa los enteros iniciando por el digito menos significativo y moviéndose al digito más significativo (de derecha a izquierda). El radix MSD procesa los enteros iniciando por el digito más significativo y moviéndose al digito menos significativo (de izquierda a derecha).
  • 23. Ordenación externa La ordenación externa o de archivos, recibe este nombre ya que los elementos se encuentran almacenados en un archivo, el cual se almacena en un dispositivo de almacenamiento secundario o externo. Los algoritmos de ordenación externa son necesarios cuando los datos que se quiere ordenar no cabe en la memoria principal (RAM) de la computadora y por tal motivo se encuentran almacenados en un dispositivo secundario externo (el disco duro, cinta, memoria USB, etc.). La mayoría de estos algoritmos utilizan la técnica de divide y vencerás y la intercalación de archivos, para aplicar el ordenamiento. Intercalación Por intercalación de archivos se entiende la unión o fusión de dos o más archivos, previamente ordenados, en un solo archivo, el cual debe quedar ordenado al hacer la intercalación. La intercalación directa o mezcla directa es un algoritmo de ordenación externa, que permite organizar los elementos de un archivo, de forma ascendente o descendente. La idea centrar de este algoritmo consiste en realizar de forma sucesiva una partición y una fusión que produce secuencias ordenadas de longitud cada vez mayor. En la primera pasada la partición es de longitud 1 y la fusión produce secuencias ordenadas de longitud 2. En la segunda pasada la partición es de longitud 2 y la fusión produce secuencias ordenadas de longitud 4. Este proceso se repite hasta que la longitud de la partición sea menor o igual al número de elementos del archivo original.
  • 24. Conclusión  Los métodos de ordenamiento, valga la redundancia, nos permiten ordenar de manera rápida una colección de datos facilitando la tarea de buscar un dato en cuanto es requerido, unos ejemplos ya vistos son el método burbuja el cual tiene función de ordenar los valores de menor a mayor y Quicksort que es el método mas rápido para ordenar algún valor utilizando pivotes
  • 25. Unidad 6 métodos de búsqueda Los métodos de búsqueda nos permiten recuperar datos previamente almacenados. El resultado de una búsqueda puede ser un éxito, si se encuentra la información o un fracaso, si no la encuentra. La búsqueda se puede aplicar sobre elementos previamente ordenados o sobre elementos desordenados, se trata de encontrar una cantidad de elementos similares. Los métodos de búsqueda se clasifican en: - Búsqueda interna. - Búsqueda externa. Búsqueda interna. La búsqueda interna es aquella en la que todos los elementos de la estructura estática (arreglo) o dinámica (lista ligada o árbol) se encuentran almacenados en la memoria principal de la computadora. Los métodos de búsqueda interna más importantes son: - Secuencial o lineal. - Binaria. - Hash (transformación de claves)
  • 26.  Secuencial. El método de búsqueda secuencial consiste en revisar la estructura de datos elemento por elemento hasta encontrar el dato que estamos buscando, o hasta llegar al final de la estructura de datos.  Binaria. El método de búsqueda binaria divide el total de los elementos en dos, comparando el elemento buscado con el central, en caso de no ser iguales, se determina si el elemento buscado es menor o mayor al central, para determinar si la búsqueda continua del lado izquierdo (menor) o derecho (mayor) del central, repitiendo el mismo proceso de división y comparación, hasta encontrar el elemento buscado o que la división ya no sea posible. Ejemplo. Si tenemos una estructura ordenada 0, 1, 2, 3, 5, 5, 5, 7, 8, 9 y estamos buscando el número 5, el resultado de la búsqueda nos mostraría la posicione 4 y el proceso terminaría ya que el elemento buscado no es diferente al que esta en la posición central.
  • 27. hash  El método de búsqueda hash o por transformación de clave aumenta la velocidad de búsqueda sin necesidad de que los elementos estén previamente ordenados, comparándolo con los métodos anteriores. Además tiene la ventaja de que el tiempo de búsqueda es independiente del número de elementos de la estructura que los almacena. Este método permite que el acceso a los datos sea por una llave que indica directamente la posición donde están guardados los datos que se buscan. Prácticamente trabaja con una función que transforma la llave o dato clave en una dirección (índice) dentro de la estructura y que en ocasiones puede generar una colisión, que se define como una misma dirección para dos o más claves distintas.  Ejemplo. Si tenemos un total de 100 elementos y dos claves que sean 7259 y 9359, las direcciones generadas son las siguientes: La función módulo o por división dirección = (clave % total elementos) dirección = (7259%100) = 59 dirección = (9359%100) = 59 dirección = (7259%97) = 81 dirección = (9359%97) = 47
  • 28. Conclusión  Los métodos de búsqueda de dato son herramientas que facilitan al programador y usuario el buscar pronta y efectivamente datos previamente ordenados para algún uso en particular
  • 29. Unidad 7 Análisis de los algoritmos Análisis de algoritmo Un algoritmo es una secuencia de pasos lógica para encontrar la solución de un problema. Todo algoritmo debe contar con las siguientes características: preciso, definido y finito. Por Preciso, entenderemos que cada paso del algoritmo tiene una relación con el anterior y el siguiente; un algoritmo es Definido, cuando se ejecuta más de una vez con los mismos datos y el resultado es el mismo; y Finito, indica que el algoritmo cuenta con una serie de pasos definidos o que tiene un fin.  Complejidad Tiempo de ejecución de un algoritmo El tiempo de ejecución de un algoritmo, se refiere a la suma de los tiempos en los que el programa tarda en ejecutar una a una todas sus instrucciones, tomando en cuanta que cada instrucción requiere una unidad de tiempo, dicho tiempo se puede calcular en función de n (el numero de datos), lo que se denomina T(n) Asignación de un valor a una variable. - Llamada a un método. - Ejecución de una operación aritmética. - Comparar dos números. - Poner índices a un arreglo. - Seguir una referencia de objeto. - Retorno de un método.
  • 30. public int Mayor() { int may=arr[0]; for(ind=0; ind<arr.length; ind++) if(arr[ind]>may) may=arr[ind]; return may; } Para este ejemplo se pueden encontrar dos formulas que determinen el tiempo de ejecución, la primera representa el peor de los casos y la segunda el mejor de los casos.  Complejidad en espacio La complejidad de espacio, se refiere a la memoria que utiliza un programa para su ejecución; es decir el espacio de memoria que ocupan todas las variables propias del programa. Dicha memoria se divide en Memoria estática y Memoria dinámica. Tipo de dato primitivo Tamaño en bits Tamaño en Bytes byte char short int float long double 8 16 16 32 32 64 64 1 2 2 4 4 8 8
  • 31. Conclusión  El análisis de algoritmos se trata de buscar la mejor solución de entre varios algoritmos para cierto problema o meta al cual llegar de forma eficiente y con menos recursos posibles