38
Instituto Tecnológico de Cuautla Nombres: LEZAMA ESCOBAR CESAR GUZMAN VAZQUEZ CARLOS DIEGO SANCHEZ MEDERO GABRIEL GALVAN MARTINEZ EURY GRUPO: 1 SEMESTRE: 3 I.T.C

Arboles en La Programacion

Embed Size (px)

Citation preview

Page 1: Arboles en La Programacion

Instituto Tecnológico de Cuautla

Nombres: LEZAMA ESCOBAR CESAR GUZMAN VAZQUEZ CARLOS DIEGO SANCHEZ MEDERO GABRIEL GALVAN MARTINEZ EURY

GRUPO: 1 SEMESTRE: 3

I.T.C

MATERIA: ESTRUCTURA DE DATOS

Page 2: Arboles en La Programacion

Instituto Tecnológico de CuautlaPROF: JOSE ARNULFO CORONA

CALVARIO

Índice

1. Introducción 2. Planteamiento 3. Importancia 4. Justificación 5. Objetivo 6. Fundamento Teórico 7. Análisis de algoritmos

-Complejidad8. Eficiencia de algoritmos 9. Análisis de los métodos de búsqueda

-Algoritmo, prueba de escritorio

Page 3: Arboles en La Programacion

Instituto Tecnológico de Cuautla-código, ejecución-comparaciones eficiencia

10. Análisis de los métodos de ordenamiento -Algoritmo, prueba de escritorio-comparación de eficiencia

11. conclusión y recomendaciones

1.Introducción

El árbol es una abstracción matemática de una estructura no lineal que modela una estructura jerárquica. El árbol juega un papel central en el diseño y análisis de algoritmos ya que se utilizan para describir propiedades dinámicas de los algoritmos y porque se construyen. Los árboles se encuentran frecuentemente en la vida diaria: en árboles genealógicos y representación de torneos. En computación los encontramos en los compiladores, en la organización de sistemas de archivos la estructura de herencia de las clases de Java es un árbol, la invocación de los métodos en tiempo de ejecución en Java es un árbol; procesamiento de textos y algoritmos de búsqueda. Existen varios tipos de árboles: 5.1 Árboles binarios Conjunto finito de nodos el cual puede ser vacío o tener un par de árboles llamados izquierdo y derecho. Cuando un nodo no tiene hijos se le llama hoja o nodo terminal. La Altura de un árbol es el número de niveles que tiene. Un árbol es completo cuando contiene el número máximo de nodos para su altura.

En ciencias de la computación, un árbol es una estructura de datos ampliamente usada que emula la forma de un árbol (un conjunto de nodos conectados). Un nodo es la unidad sobre la que se construye el árbol y puede tener cero o mas nodos hijos conectados a él. Se dice que un nodo a es padre de un nodo b, si existe un enlace desde a hasta b (en ese caso, también decimos que b es hijo de a). Sólo puede haber un único nodo sin padres, que llamaremos raíz. Un nodo que no tiene hijos se conoce como hoja.

Page 4: Arboles en La Programacion

Instituto Tecnológico de CuautlaEl árbol También se define como una estructura de datos no lineal. Esta estructura se usa principalmente para representar datos con una relación jerárquica entre sus elementos, como por ejemplo registros, árboles genealógicos y tablas de contenidos. Entre otros tenemos un tipo especial de de árbol que es, llamado árbol binario, que puede ser implementado fácilmente en la computadora.

Planteamiento

Importancia

Árboles

Los árboles se pueden definir como un tipo restringido de grafo.

Un grafo se define de la siguiente manera: Un grafo consiste de un número de nodos (puntos o vértices) y un grupo de arcos que unen parejas de nodos. A todos los pares de nodos unidos por un arco se les llama nodos adyacentes. Los arcos pueden te tener una dirección determinada, generando así un grafo dirigido, el cual de lo contrario sería no-dirigido. (También existen los grafos mixtos).Por convención a los nodos de un grafo sele representa con círculos y los arcos que los conectan como líneas (no-dirigido) o flechas (dirigido).

Los árboles son entonces un subconjunto importante de los grafos, y son una herramienta útil para describir estructuras que

Page 5: Arboles en La Programacion

Instituto Tecnológico de Cuautlarepresentan algún tipo de jerarquía.Un árbol dirigido tiene un nodo al que sele llama "raíz" y de este nodo parten todas las conexiones a los demás nodos. A los nodos terminales se les llama "hojas" y a todos los demás se les llama nodos intermedios.De acuerdo al número de arcos que parten de cada nodo en un árbol, este se puede clasificar en diferentes categorías. Así se tienen árboles binarios, árboles2-3-4, árboles rojo-negros, árboles B, etc.

A los nodos que dependen de otro nodo también se les conoce como nodos "hijos" o descendientes y al otro se le llama nodo "padre".De esto de puede concluir que cada nodo padre es una raíz de un sub-árbol.

El número de sub-árboles que tiene un nodo determinan el grado del nodo. Naturalmente el grado de las hojas es de cero. Por convención al nodo raíz de árbol sele considera el nivel cero del árbol.Cuando se tienen varios árboles en un conjunto, al conjunto se le llama bosque.

Altura de un nodo : Es la longitud del camino más largo desde el nodo hasta una hoja que sea descendiente de este nodo.

Altura de un árbol   = altura del nodo raíz.

Para poder realizar búsquedas eficientes en árboles se manejan dos características: Los árboles pueden estar balanceados por

Page 6: Arboles en La Programacion

Instituto Tecnológico de Cuautlaaltura o por peso. 

Árbol balanceado por altura : en dónde todos los hijos o nodos hoja se intentan mantener a la misma distanciada la raíz.

Árbol balanceado por peso : en dónde los nodos más visitados o utilizados se mantienen a poca distancia dela raíz

Justificación

El presente trabajo trata de la utilización de los arboles dentro del lenguaje de programación java, como lo son sus características y sus respectivas operaciones como lo es eliminar e insertar un dato, además de que es posible de que pueda ordenar un árbol en sus diferentes formas como lo son inorden, postorden y pre orden.

Se ha desarrollado el código para poder lograr el funcionamiento del programa con su respectiva característica

Objetivo

En este tema se estudia una de las estructuras de datos no lineales más importantes en computación, el árbol. Comenzaremosintroduciendo la terminología asociada a los árboles ycontinuaremos con definiciones de varios tipos de árboles y susaplicaciones. Para cada tipo de árbol presentaremos suespecificación e implementación, así como los principalesAlgoritmos de manipulación.

Conceptos teóricos de arboles

Page 7: Arboles en La Programacion

Instituto Tecnológico de CuautlaÁrbol: estructura no lineal y dinámica de datos más importante en computación• Dinámica: puede cambiar durante la ejecución de un programa• No lineal: a cada elemento del árbol pueden seguirle varios elementosÁrboles.A los arboles ordenados de grado dos se les conoce como arboles binarios ya que cada nodo del árbol no tendrá más de dos descendientes directos. Las aplicaciones de los arboles binarios son muy variadas ya que se les puede utilizar para representar una estructura en la cual es posible tomar decisiones con dos opciones en distintos puntos.La representación gráfica de un árbol binarioes la siguiente:

Representación en MemoriaHay dos formas tradicionales de representar un árbol binario en memoria:• Por medio de datos tipo punteros también conocidos como variables dinámicas o listas.• Por medio de arreglos.Sin embargo la más utilizada es la primera, puesto que es la más natural para tratar este tipo de estructuras.Los nodos del árbol binario serán representados como registros que contendrán como mínimo tres campos. En un campo se almacenará la información del nodo. Los dos restantes se utilizarán para apuntar al subárbol izquierdo y derecho del subárbol en cuestión.Cada nodo se representa gráficamente de la siguiente Manera:

Page 8: Arboles en La Programacion

Instituto Tecnológico de Cuautla

El algoritmo de creación de un árbol binario es el siguiente:

Procedimiento crear(q:nodo)iniciomensaje("Rama izquierda?")lee(respuesta)si respuesta = "si" entoncesnew(p)q(li) <-- nilcrear(p)en caso contrarioq(li) <-- nilmensaje("Rama derecha?")lee(respuesta)si respuesta="si" entoncesnew(p)q(ld)<--pcrear(p)en caso contrarioq(ld) <--nilfinINICIOnew(p)raiz<--pcrear(p)FINClasificación de Arboles BinariosExisten cuatro tipos de árbol binario:.• A. B. Distinto.• A. B. Similares.• A. B. Equivalentes.• A. B. Completos.

Page 9: Arboles en La Programacion

Instituto Tecnológico de CuautlaA continuación se hará una breve descripción de los diferentes tipos de árbol binario así como un ejemplo de cada uno de ellos.

A. B. DISTINTOSe dice que dos árboles binarios son distintos cuando sus estructuras son diferentes. Ejemplo:

A. B. SIMILARESDos arboles binarios son similares cuando sus estructuras son idénticas, pero la información que contienen sus nodos es diferente. Ejemplo:

A. B. EQUIVALENTESSon aquellos arboles que son similares y que además los nodos contienen la misma información. Ejemplo:

A. B. COMPLETOSSon aquellos arboles en los que todos sus nodos excepto los del ultimo nivel, tiene dos hijos; el subarbol izquierdo y el subarbol derecho.

Page 10: Arboles en La Programacion

Instituto Tecnológico de CuautlaRecorrido de un Árbol BinarioHay tres maneras de recorrer un árbol: en inorden, preorden y postorden. Cada una de ellas tiene una secuencia distinta para analizar el árbol como se puede ver a continuación:

1. INORDEN O Recorrer el subárbol izquierdo en inorden.O Examinar la raíz.O Recorrer el subárbol derecho en inorden.2. PREORDEN O Examinar la raíz.O Recorrer el subárbol izquierdo en preorden.O recorrer el subárbol derecho en preorden.3. POSTORDEN O Recorrer el subárbol izquierdo en postorden.O Recorrer el subárbol derecho en postorden.O Examinar la raíz.A continuación se muestra un ejemplo de los diferentes recorridos en un árbol binario.

Inorden: GDBHEIACJKFPreorden: ABDGEHICFJKPostorden: GDHIEBKJFCA

Page 11: Arboles en La Programacion

Instituto Tecnológico de Cuautla

Programa De Arboles:

importjava.util.Scanner;import java.io.*;classPruebaArbol {public static void main(String[] args) {Scanner isr=new Scanner(System.in);Arbolarbol = new Arbol();intvalor,opc=0;System.out.println("PROGRAMA DE ARBOLES");do {System.out.println("\n============================");System.out.println("= 1.-Nuevo dato =");System.out.println("= 2.-Preorden =");System.out.println("= 3.-Inorden =");System.out.println("= 4.-Postorden =");System.out.println("= 5.-Salir =");System.out.println("============================");System.out.print("OPCION --> ");try{opc = isr.nextInt();}

Page 12: Arboles en La Programacion

Instituto Tecnológico de Cuautlacatch(Exception e){opc=6;}switch(opc) {case 1 :System.out.print("\nAñadedato --> ");valor = isr.nextInt();arbol.insertarNodo(valor);break;

case 2 :System.out.print("\nRecorridoPreorden -->\t");arbol.recorridoPreorden();System.out.println();break;case 3 :System.out.print("\nRecorridoInorden -->\t");arbol.recorridoInorden();System.out.println();break;case 4 :System.out.println("\nRecorridoPostorden -->\t");arbol.recorridoPostorden();System.out.println();break;case 5 : System.exit(0);break;}}while(opc!=0);}}classArbol {privateNodoArbolraiz;publicArbol() {

Page 13: Arboles en La Programacion

Instituto Tecnológico de Cuautlaraiz = null;}public void insertarNodo(intvalorInsertar){if(raiz == null){raiz = new NodoArbol(valorInsertar);}else{raiz.insertar(valorInsertar);}}

PublicvoidrecorridoPreorden(){ayudantePreorden(raiz);}Prívate voidayudantePreorden(NodoArbol nodo){if(nodo == null){return;}System.out.print(nodo.datos+"\t");ayudantePreorden(nodo.nodoIzq);ayudantePreorden(nodo.nodoDer);}publicvoidrecorridoInorden(){ayudanteInorden(raiz);}privatevoidayudanteInorden(NodoArbolnodo) {if(nodo == null){return;}ayudanteInorden(nodo.nodoIzq);ayudanteInorden(nodo.nodoDer);System.out.print(nodo.datos+"\t");

Page 14: Arboles en La Programacion

Instituto Tecnológico de Cuautla}publicvoidrecorridoPostorden(){ayudantePostorden(raiz);}privatevoidayudantePostorden(NodoArbolnodo) {if(nodo == null){return;}ayudantePostorden(nodo.nodoIzq);ayudantePostorden(nodo.nodoDer);System.out.print(nodo.datos+"\t");}}

ClassNodoArbol {NodoArbolnodoIzq;intdatos;NodoArbolnodoDer;

PublicNodoArbol(intdatosNodo) {this.datos = datosNodo;nodoIzq = nodoDer = null;}Publicvoidinsertar(intvalorInsertar){if(valorInsertar< datos){if(nodoIzq == null){nodoIzq = new NodoArbol(valorInsertar);}else{nodoIzq.insertar(valorInsertar);}}else if(valorInsertar>datos){

Page 15: Arboles en La Programacion

Instituto Tecnológico de Cuautlaif(nodoDer == null){nodoDer = new NodoArbol(valorInsertar);}else{nodoDer.insertar(valorInsertar);}}}}}

3. FundamentoTeórico

Page 16: Arboles en La Programacion

Instituto Tecnológico de Cuautla

Análisis de algoritmos

La resolución práctica de un problema exige por una parte un algoritmo o método de resolución y por otra un programa o codificación de aquel en un ordenador real. Ambos componentes tienen su importancia; pero la del algoritmo es absolutamente esencial, mientras que la codificación puede muchas veces pasar a nivel de anécdota.

A efectos prácticos o ingenieriles, nos deben preocupar los recursos físicos necesarios para que un programa se ejecute. Aunque puede haber muchos parámetros, los mas usuales son el tiempo de ejecución y la cantidad de memoria (espacio). Ocurre con frecuencia que ambos parámetros están fijados por otras razones y se plantea la pregunta inversa: ¿cual es el tamaño del mayor problema que puedo resolver en T segundos y/o con M bytes de memoria? En lo que sigue

nos centraremos casi siempre en el parámetro tiempo de ejecución, si bien las ideas desarrolladas son fácilmente aplicables a otro tipo de recursos.

Para cada problema determinaremos una medida N de su tamaño (por número de datos) e intentaremos hallar respuestas en función de dicho N. El concepto exacto que mide N depende de la naturaleza del problema. Así, para un vector se suele utilizar como N su longitud; para una matriz, el número de elementos que la componen; para un grafo, puede ser el número de nodos (a veces es mas importante considerar el número de arcos, dependiendo del tipo de problema a resolver); en un fichero se suele usar el número de registros, etc. Es imposible dar una regla general, pues cada problema tiene su propia lógica de coste.

Complejidad

Page 17: Arboles en La Programacion

Instituto Tecnológico de CuautlaEn las Ciencias de la Computación cuando se dice que un problema tiene solución, significa que existe un algoritmo susceptible de implantarse en una computadora, capaz de producir la respuesta correcta para cualquier instancia del problema en cuestión.Para ciertos problemas es posible encontrar más de un algoritmo capaz de resolverlos, lo cual nos enfrenta al problema de escoger alguno de ellos. La tarea de decidir cuál de ellos es el mejor debe basarse en criterios acordes a nuestros intereses. En la mayoría de los casos la elección de un buen algoritmo está orientada hacia la disminución del costo que implica la solución del problema; bajo este enfoque es posible dividir los criterios en dos clases:

a) Criterios orientados a minimizar el costo de desarrollo: claridad, sencillez y facilidad de implantación, depuración y mantenimiento.

b) Criterios orientados a disminuir el costo de ejecución: tiempo de procesador y cantidad de memoria utilizados.

Si el programa que implanta el algoritmo se va a ejecutar unas cuantas veces, el costo de desarrollo es dominante, en este caso se debe dar más peso a los primeros criterios. Por el contrario, si el programa se va a utilizar frecuentemente, dominará el costo de ejecución, y por ende, se debe elegir un algoritmo que haga uso enciente de los recursos de la computadora, es decir, se le debe evaluar prioritariamente bajo los criterios de la segunda clase.

Eficiencia de algoritmos

Medida del uso de los recursos computacionales requeridos por la ejecución de un algoritmo en función del tamaño de las entradas.Empírica • Teórica estamos interesados en contar cuantas instrucciones  simples (asignaciones, comparaciones, etc.) se ejecutan, 

Page 18: Arboles en La Programacion

Instituto Tecnológico de Cuautlaasumimos que independientemente de la máquina en  que se ejecute, todas las operaciones simples  consumen el mismo tiempo. Principio de Invariancia: Dos implementaciones distintas de un mismo algoritmo  no difieren en eficiencia más que en una constante  multiplicativa.

Tipos   de   Análisis • Peor de los Casos: Se corresponde con el peor tiempo. T(n)  es el tiempo máximo sobre las entradas.  • Mejor Caso: Límite inferior en el tiempo. T(n) es el menor  tiempo de  todas las posibles entradas • Caso Promedio: Es el tiempo medio esperado sobre todas  las posibles entradas de tamaño n. Se considera una  distribución de probabilidad sobre las entradas.   • Análisis Probabilístico:  Es el tiempo de ejecución esperado  para una entrada aleatoria. Se expresa tanto el tiempo de  ejecución y la probabilidad de obtenerlo. • Análisis Amortizado: El tiempo que se obtiene para un  conjunto de ejecuciones, dividido por el número de  ejecuciones.

4. Análisis de los métodos de búsqueda

Búsqueda Secuencial

Este método se usa para buscar un elemento de un vector, es explorar secuencialmente el vector, es decir; recorrer el vector desde el prior elemento hasta el último. Si se encuentra el elemento buscado se debe visualizar un mensaje similar a “Fin de Búsqueda” o “Elemento encontrado” y otro que diga “posición=” en caso contrario, visualizar un mensaje similar a “Elemento no existe en la Lista”.

Este tipo de búsqueda compara cada elemento del vector con el valor a encontrar hasta que este se consiga o se termine de leer el vector completo.

Page 19: Arboles en La Programacion

Instituto Tecnológico de Cuautla

classbusquedaLineal

{public static void main(String[]args){int a[],n,n1,indice;

Scanner sc=new Scanner(System.in);

System.out.print("Ingresa tamaño del arreglo: ");n=sc.nextInt();

a=new int[n];

a=inicializa(n);muestra(a);

System.out.print("Ingresa numero a buscar: ");n1=sc.nextInt();

indice=busquedaLineal(a,n1);if(indice==-1){System.out.println("tu número no esta en la lista");}else{System.out.println("tu número esta en el indice: "+indice);}}

staticint[] inicializa(int n){inti,j,a[]=new int[n];for(i=0;i<n;i++)

Page 20: Arboles en La Programacion

Instituto Tecnológico de Cuautla

{a[i]=randomxy(1,50);}

return a;}

staticintbusquedaLineal(int a[],int n){inti;for (i=0;i<a.length;i++){if (a[i] == n){return i+1;}}return -1;}

static void muestra(int a[]){int n=a.length;for(inti=0;i<n;i++){System.out.print(a[i]+" ");}System.out.print("nn");

}

staticintrandomxy(intx,int y){int ran=(int) (Math.floor(Math.random()*(y-x+1))+x);

returnran;}}

Page 21: Arboles en La Programacion

Instituto Tecnológico de Cuautla

BUSQUEDA BINARIA

Es un método que se basa en la división sucesiva del espacio ocupado por el vector en sucesivas mitades, hasta encontrar el elemento buscado.

Esta búsqueda utiliza un método de “divide y vencerás” para localizar el valor deseado. Con este método se examina primero el elemento central de la lista; si este es el elemento buscado entonces la búsqueda ha terminado. En caso contrario se determina si el elemento buscado está en la primera o segunda mitad de la lista y a continuación se repite el proceso anterior, utilizando el elemento central de esta sublista. Este tipo de búsqueda se utiliza en vectores ordenados.

Algoritmo, prueba de escritorio

classBusquedaAlgoritmo{public static intbuscar( int [] arreglo, intdato){intinicio = 0;int fin = arreglo.length - 1;intpos;while (inicio <= fin) {pos = (inicio+fin) / 2;if ( arreglo[pos] == dato )return pos;elseif ( arreglo[pos] < dato ) {inicio = pos+1;} else {fin = pos-1;}}return -1;}

Page 22: Arboles en La Programacion

Instituto Tecnológico de Cuautla}

public class BusquedaBinaria{public static void main (String args[]){// Llenar arregloint [] edades = new int [35];for (inti = 0; i<edades.length ; i++)edades[i] = i*i ;

// Mostrararreglo.for (inti = 0; i<edades.length ; i++)System.out.println( "edades["+i+"]: "+ edades[i]);int resultado = BusquedaAlgoritmo.buscar(edades, 9);if (resultado != -1) {System.out.println( "Encontrado en: "+ resultado);} else {System.out.println( "El dato no se encuentra en el arreglo, o el arreglo no esta ordenado." );}}}código, ejecución

classBusquedaAlgoritmo{publicstaticint buscar( int [] arreglo, int dato) {int inicio = 0;int fin = arreglo.length - 1;int pos;while (inicio <= fin) {pos = (inicio+fin) / 2;if ( arreglo[pos] == dato )return pos;elseif ( arreglo[pos] < dato ) {inicio = pos+1;} else {fin = pos-1;

Page 23: Arboles en La Programacion

Instituto Tecnológico de Cuautla}}return -1;}}

public class BusquedaBinaria{public static void main (String args[]) {// Llenar arregloint [] edades = new int [35];for (inti = 0; i<edades.length ; i++)edades[i] = i*i ;

// Mostrararreglo.for (inti = 0; i<edades.length ; i++)System.out.println( "edades["+i+"]: "+ edades[i]);

int resultado = BusquedaAlgoritmo.buscar(edades, 9);

if (resultado != -1) {System.out.println( "Encontrado en: "+ resultado);} else {System.out.println( "El dato no se encuentra en el arreglo, o el arreglo no esta ordenado." );}

}}

Page 24: Arboles en La Programacion

Instituto Tecnológico de Cuautla

Ejecución del programa

Page 25: Arboles en La Programacion

Instituto Tecnológico de Cuautla

Comparaciones eficiencia

Page 26: Arboles en La Programacion

Instituto Tecnológico de Cuautla

Análisis de los métodos de

ordenamiento

Ordenación o clasificación es el proceso de reordenar un conjunto de objetos en un orden específico. El propósito de la ordenación es facilitarla búsqueda de elementos en el

Page 27: Arboles en La Programacion

Instituto Tecnológico de Cuautlaconjunto ordenado. Existen muchos algoritmos de ordenación, siendo la diferencia entre ellos las ventajas de unos sobre otros en la eficiencia en tiempo de ejecución. A continuación de hará un análisis de los métodos de ordenamiento tanto Interno como Externo.

Ordenación interna

Los datos se encuentran en memoria (ya sean arreglos, listas, etc.), y son de acceso aleatorio o directo (se puede acceder a un determinado campo sin pasar por los anteriores).Características:

•Los computadores emplean gran parte de su tiempo en operaciones de búsqueda y ordenamiento.•Existen 2 métodos de ordenación: ordenación interna (de arrays) y ordenación externa (archivos).•Los arrays se almacenan en la memoria interna o central, de acceso aleatorio y directo, y por ello su gestión es rápida.•Los métodos de ordenación interna se aplican principalmente a arreglos unidimensionales.

METODOS DE ORDENACION INTERNA :

Método de la Burbuja:Revisando cada elemento de la lista que va hacer ordenada con el siguiente, intercambiándolos de posición si están en el orden equivocado.

Método QuickShort:S e t o m a u n e l e m e n t o x d e u n a p o s i c i ó n cualquiera del arreglo. Ubica a x en la posición correcta del arreglo, de tal forma que todos los elementos a su izquierda sean menores o iguales

Page 28: Arboles en La Programacion

Instituto Tecnológico de CuautlaCOMPARACION DE METODOS DE ORDENAMIENTO ESTRUCTURA DE DATOS

a x y todos los elementos que se encuentren a su derecha sean mayores iguales a x.

Método Shellshort:El algoritmo que ha implementado consiste en o r d e n a r u n v e c t o r . U t i l i z a u n a s e g m e n t a c i ó n e n t r e l o s d a t o s . E s t a segmentación puede ser de cualquier tamaño de acuerdo a una secuencia de valores que empieza con un valor grande (pero menor al tamaño total del vector) y van disminuyendo hasta llegar a una segmentación de tamaño ́ 1 .́

Método Radix:Este ordenamiento se basa en los valores de los dígitos reales en las representaciones de posiciones de los números que reordenan. Por ejemplo, el número 235 es en notación decimal que rescribe con un 2 en la posición de centenas, un 3 en la posición de d e c e n a s y u n 5 e n l a p o s i c i ó n d e u n i d a d e s . E l m á s g r a n d e d e d o s enteros de igual longitud se determina del modo siguiente: empezar en el digito más significativo y avanzar por los dígitos menos significativos mientras coincidan los dígitos correspondientes en los dos números. El número con el digito más grande en la primera posición en la cual los dígitos de los dos números no coinciden es el mayor de los dos. Por supuesto, si coinciden todos los dígitos de ambos números, los números son iguales.

ORDENACIÓN EXTERNA: Es un término genérico para los algoritmos que pueden manejar grandes cantidades de información. El ordenamiento externo se requiere cuando la información que se tiene que ordenar no cabe en la memoria principal de una computadora (típicamente la RAM) y un t ipo de memoria más lenta (típicamente un disco) tiene que utilizaren el proceso.

Page 29: Arboles en La Programacion

Instituto Tecnológico de Cuautla

COMPARACION DE METODOS DE ORDENAMIENTO ESTRUCTURA DE DATOS

Para ello, basta con recorrer los arreglos de izquierda a derecha e ir cogiendo el menor de los dos elementos, de forma que sólo aumenta el contador del arreglo del que sale el elemento siguiente para el arreglo suma.

Mezcla Natural:

Es realizar particiones tomando secuencias ordenadas de máxima longitud en lugar de secuencias ordenadas de tamaño fijo p r e v i a m e n t e d e t e r m i n a d a s . L u e g o s e r e a l i z a l a f u s i ó n d e e s a s secuencias ordenadas, alternativamente sobre dos archivos. Repitiendo e s t e p r o c e s o s e c u e n c i a l m e n t e , s e l o g r a q u e e l a r c h i v o q u e d e completamente ordenado

conclusion y recomendacionesPara ser precisos tendríamos que añadir que la terminología (ARBOL) se define básicamente como un conjunto finito de elementos que son nombrados como (NODOS). Se puede usar términos como las relaciones de una familia para descubrir las relaciones entre los nodos de un árbol; y un árbol puede ser implementado fácilmente en una computadora. Es un buen ejemplo ya que se puede saber mucho sobre lo que tiene que ver con los árboles; entre tanto que podemos mencionar se encuentra la raíz, los nodos de un árbol y la diferencia entre nodos sucesores y nodos terminales, y e este proyecto deja un claro ejemplo y una excelente explicación al respecto.