You are on page 1of 10
‘ALGORITMOS ¥ ESTRUCTURAS DE DATOS Unidad V: ARREGLOS CCONTENIDO: ‘regs undmensonales dtidcén subleases mutidinensonks: defn, subedess, Scan rans Trnspues. Opracones sobre ares. Bisque onenanlensBisqudasecuen, bina. Odenanints por seleln poerarbie: modo dela bur Teoa de acarpljdadcmputaconl: tempo dacomguto, ppotlana: deteminisices ne deters. © Intenduceidn ‘+ Hasta ahora hemos vito el concepto de datos simples o primitives, come ENTERO, REAL, CARACTER, que sdlo pueden almacenar un valor ala vex. ‘+ Enesta unidad vamos a estudiar las Estructuras de Datos que dan origen alae variables dimensionadas, © Awéocuna ectructura de dato? ‘+ Eeuntipo de dato formade por un conjunte de elementos de un misme tipo de dates. ‘© Undate de epo estructurado puede almacenar a més de un elemento a la ver, con la condicion de que todas los elementos deben ser del mismo tino de dato ‘+ Caracterstiea que las dfereneian > Data simples: ada varihle rpracontaun cal plement Matas compunctnc: cada varahlereprecenta riitiples dstac individuals, ya vez cada uno de ests elementos se pueden referenciar de manera independiente. © Lac Feteueurac do date pu Estitias:el tamafo que acupan ce define antes de que seejerute el programa. Pore -Arreglos Dinimicas ej: Ustas © Arogine sun conjuntofiitoy ordenado de elementos homogéneos, > Finiter oc in nimoen determinad de elomentns > Ordonader Hamagéner tain lac plamentne son del misma tina de date 30 tene la limitarifn de Ins est tina en In defini del taatiaacupad Por ‘+ Seclasfiean de acuerdo con el némero de dimensiones que tienen. As tenemos tnidimensionales, bidimancionalac 0 multidimensionaloe, (© ARREGLOS UNIDIMENSIONALES: VECTORES Es una variable estructurada deUNA dimensién formada por un conjunta de elementos de datos de un misma ti que se almacenan bajo un mismo nombre se diferencian por a posicién que tiene cada elemento dentro del arreglo, ‘© Declaracién de un vector Declaracién de un vector Establecer: . = 2 ae) 4 oo wice © positon fi a Aion \VAR nombre [tamaio|tipo de dato (© nambreses el nambre que identifica ala variable que es un vertor tamafia:niimera entero que Inca la cantidad de elementos que tend el arreglo (© dimension: nimern entero que indica ia antital de Indlees que rena el serge 10 tina de datas es spa de datn del eanuntn de datas del are, puede ser ENTERO, REAL, CARACTER, ete © incteo (© Peemac referienasal vecar completa a aun nies elementn, ya cea para asgnar un valor o para recuperar. Debemos hacerlo ast: ‘nombre [subindice] (© subindice: nalca i posciin del elementn dentro del vectr. Debe ser: 1<=subindice <=tamafio (© Purdie ser una varlable de ipa ENTERO, una constante numérica de te ENTERO, © ‘una expresién cuyo resultado sea un valor de tipo ENTERO. Operacianes can vertores: ‘*Asignacién ‘¢Lectura/esertura ‘+ Recorido (acceso secuencil) ‘© ordenamiento © eusqueda Asanacisn ‘S Asigna ol valor “" al sim elemento del vector, ‘¢ Nombre] = x ‘s También se puede asignar valores a todo el vector. VARIARIDESDE LHASA t —t:tamafo Nombre FIN VARIAR Esimportante observar que la cantidad de elementos a usar puede ser menor al tamafio del arreglo, Y (ectura/Eserturs Lectura: Se ingreza un valor desde un Periférie de Entrada, que se almacena on el elemento seleccionado, Leer (nombre fi) Esertura: Se muestra ol valor almacenado on el elemento selecclonado, on un Periféica do Salida, Escrbir(nombre i) ecortide (Acceso secuencial del vector) Es acceder a todos los elementos de un areglo, desde e primer elemento hasta el ditimo en forma ordenada, ya sea para ler, escriiroasignar, Para esto se utilizan estructuras repettvas, También puede usarse para realizar a bisqueda de un valor entre sus elementos, Para Eeeribir \VARIAR IDESDE 1 HASTA n Escribir (nombre i] ) FINVARIAR Para Leor \VARIAR i DESDE 1 HASTA n Leer ( nombre [i}) FINVARIAR, Para Asignar \VARIAR i DESDE 1 HASTA n ‘nombre [l= 0 FINVARIAR Flempla de Arreplalinidimencianal Leer as estaturas de 50 alumnos de una clase, Mostrar lacantidad de alumnos con estatura ‘mayor que la media, PROGRAMA estatura VAR, alumnos{S0}, media, suma: REAL ‘antAlu, cantMay = ENTERO INIcio suma = 00 cantMay = 0 i Jseingresa la cantidad de alurmnos (¢=50) REPETIR Leer {cantAlu} HASTA cantAlu 30 M1 cantAlu <=80 se ngresanestaturas \VARIAR i DESDE 1 HASTA cantAlu REPETIR Leer (aurmnosfi]} HASTA alumnos f>0 FIN VARIAR J} calcula la media \VARIAR i DESDE 1 HASTA cantAlu summa = suma + alumnos fi FINVARIAR Media = suma /cantAlu dJcuenta estaturas mayores que la media. \VARIAR i DESDE 1 HASTA cantAlu SJ alunos fi] > media ENTONCES cantMay = cantMay+1 inst FINVARIAR Iimuestra resultados Escribir ("la estatura media es, media) scribe (la cantidad de alumnas con estatura mayor ala media es", cantMay) FINPROGRAMA, (© ARREGLOS RIDINENSIONALES: MATRICES © Esuna variable estructurada de DOS dimensiones formada por un conjunto de elementos de datos de un misma tipa de datos que se almacenan bajo un mismo nombre y se distribuyen cen las ycolumnas. © Matrices Matrices Nombrede la atria ,o2 os ” : 1 Wimerodecemontes 7 (ABI ABE AH azn i aga) A199 2 ey bos: 9 ARO Ana Ama Anm ‘+ Declaracién de matrices ‘VAR nombre [tamafofila, tamafiocolumna]: tipo de datos. (© nombre es el nombre que identifica aa variable que es (© Tamaftoflz niece entero que India la canta ee fas (© Tamafocolumna:niimero entero que inca la canta de columns © tipade date celina de data del earjunta de datas del areglo, puede ser ENTERO, REAL, CARACTER, et © indtce Podemos referirnos a la matri completa oa un dnico elemento, ya sea para asignar un valor © para recuperar. Debemos hacerlo ai ‘Nombre [subindicefia, subindicecolurmna] (©. Subindlcefl intra en qué fla se encuentra el elemento = Deboser: 1-< subindicefila <= tamatofila (©. subindicecolumna: incca en qué alumna se encuntra el elementa ‘© Debo er: 1-<= subindicceolumna <= tamafocolumna (©. Puede ser unavarlabl tina ENTERO, una constante numérls i tne ENTERO a una ‘expresién cuyo resultado sea un valor ENTERO. © Operaciones asignacion Lectura Esertura Recorrido: se deben utzar dos bucles repettwos anidados, el primero yma externo, ara procesar as fla, yel segundo que estdanidado dentro del primero, para procesar fas columnas. ‘© As finimes para n flay m eolumnas: 12 Mates \VARIAR IDESDE 1 HASTA n \VARIAR j DESDE 1 HASTA m Leer (Matri {i,j} FINVARIAR FINVARIAR ‘© Leer as notas de exdmenes para 25 alummnos.Calcular ol promedio para cada alummno y 1 promedio general de la materia, Programa notasMateria VAR notas [25,6], promGra, promaAly, suma: REAL cantly: ENTERO Inicio promalu = 00 ise ingresa la cantidad de alumnos (<=25) REPETIR Leer (cantAlu) HASTA cantalu 20 | cantAlu ise ingresan natas~ ro cantroia cantidad de alumnos y 2 controlacantidad de exémenes \VARIAR i DESDE 1 HASTA cantly \VARIAR DESDE 1 HASTA S REPETIR Leer (notasii]) HASTA notas f>0 [¥] notas[, e=10 FIN VARIAR FIN VARIAR, J[ calcula el promedio por alumno \VARIAR i DESDE 1 HASTA cantAlu \ARIAR | DESDE 1 HASTA S romAlu = promAlu + nota (i FINVARIAR notas (i 6] = promAlu/S FINVARIAR suma = 00 calcula promedio general \VARIAR i DESDE 1 HASTA cantAlu ‘suma ssuma + nota, 6} FINVARIAR pramGral = suma /cantAlu fmnuestra promedio general Escibic ("1 promedio general de la materia es: FINPROGRAMA *, promGral) (© ABREGLOS TRINIMENSIONALES Ln arteglnFifimonsinnal es na varahleectrurturada deTRES dimensiones que agrupa varias celdas| de memoria ditribuidas en fila, columasyplanos, plano Atreglos tridimensionales (II) Yo wala) ab2a) ABA song} 823) AB33 _- aay aver at 4 AR¥2] AR22] Al282) / 2 poia saa baa / 1 | ee 1 Kynar : 2: eee Lae ‘© Dectaracién de arreglo ‘VAR nombre [tamafofil, tamafiocolumna, tamafoplana]: tipo de datos nombre: es el nombre que identifica ala variable que es un arregla tridimensional tamaflofilz cantiad de fas tamafocolumna: cantidad de columnas tamafoplano: rantad de elementos por pan ‘ipa de datos ese tipo de datns del nnjunta de dates dl REAL, CARACTER, etc © indice Podemos referirnos al arreglo completo 0 aun nico elemento, ya sea para asignar un valor 0 para recuperar. Debemos hacerlo as Nombre [subindicefila, subindicecolumna, subindiceplano] ‘D sublndlefla nrea en ni lace eneentra el elements ubindicefla <= tamafofila lea en qué caimna se encuentra el subindicecolumna <= tamafocolurmna (© sublndleeplane indica en qué plana se encuentra el elementa Debe ser: 1<=-ubindiceplano <= tamafoplana rede se: ENTERO, 00000 Puede se unavariable tina ENTERO, una constante numérics de tipo ENTERO a una ‘expresin cuyo resultado sea un valor ENTERO. © Operacionas ‘© Asignacién © Lectura © Eseritura '*Recorrio: vltzar tas bucles ropettvesanidads, el primero y ma externa, para procesar la filas, el segunda para procesar las columns el limo para pracesar los panos ‘Asi definimos para n fila, m columnas yp planos \VARIAR | DESDE 1 HASTA n \VARIAR DESDE 1 HASTA m \VARIAR k DESDE 1 HASTA p Leer (Matra (i KI) FINVARIAR, FINVARIAR FINVARIAR, © Caleuiae ol promedia la ae nat de 26 alumans, en Sevimanec de T matoriae Programa PromedioNotas VAR notas{25,5,71,promedt, suma: REAL cantAlu: ENTERO Inicio. suma = 0 {fse ingresa la cantidad de alummnos REPETIR Leer (cantAlu) HASTA cantAlu 0 [1 cantAlu <=25 Jseleen las notas del arreglo 1/310 controla cant de alumnos [2d controla cant examenes 1/310 contra cant de materias \VARIAR i DESDE 1 HASTA cantAlu VARIAR | DESDE 1 HASTA S \VARIAR k DESDE 1 HASTA 7 Leer (notes j,K)) FINVARIAR FINVARIAR FIN VARIAR, U/ calcula el promedio \VARIAR DESDE 1 HASTA cantAlu \VARIAR | DESDE 1 HASTA S \VARIAR k DESDE 1 HASTA 7 summa = suma + nota i Kl FINVARIAR FINVARIAR FIN VARIAR, promedio = suma/{cantAlu*5*7) {/Muestra el promedio Escribr (‘El promedio general es, promedio) FINPROGRAMA © ‘Seeridn Trancvorcal '¢Una seccion transversal de un areglobislmensional se obtlene al mantener a uno de sus subindices constantes mientras se hace variar a otro en el rango de valores para este iltimo, ‘+ Podemes decir que una secién transversal de una maiz es esencialmente una rebanada tomada de areal. ‘+ Para denotar una secelén transversal se usa un astelsco(*) paral ublndlce que puede tomar cualquier valor del rango defini. + 5.0") Se refiere alata, Columna del ace B BIA] = (8114) 82,4), 8(3 4)... Blo} ‘+ Be manera semejante Bf] Esa -ésima fla del arregloB Eiemole ‘Queremas referimos alas notas del 2do. examen que obtuvieron todos los alumnos del curso cen una determinada materia.) examen(*2] © Tancuecta ‘> Latranspuesta de un arreglo bidimensional se obtiene invirtiendo las posiciones del subindice ‘+ Latranspuesta de un arreglo dem x nes un arreglo den xm ‘© Latranspuesta de un arrelo B se denota como BT ‘© Por definicién: B [i,j] = BT Lyi] © BUSQUEDA Y ORDENAMIENTO ‘© En muchas ocasiones es necesarlo encontrar algln elemento en especial dentro de un _arreglo, saber si se ha guardado, o bien ordenar ls elementos siguiendo un critero, ‘+ Para ezto se necesita realizar algun proceso especial, Ester procescs se denominan bisqueda y ordenamiento y estén estrechamente relacionados. ‘6 Bisqueda es lalocalzacén de un elemento y ‘© Ordenamiento os el secuenciamlonto do clomentos tenlondo en cuenta un determinado criteria, ‘+ Slompre es mis tcl encontrar un elemento dentro de un cenjunto x éste se encuentra ordenado, © ‘icqued lineal a Secuenctal "es cl método maf simple, se debe leer consecutvamente un elemento tras otro hasta {ue coincidan el valor buseado con el valor examinado. '* Labsqueca termina extora cuando se ha encontrado el elemento buseado, 0 termina sin éxito, cuando se llega al firal del arreglo yno se encontré.el elemento. PROGRAMA busetineal VaR [Nimeros{100], i, buscado: ENTERO INICIO fingresar el nimero buscado Escibir(“ingrese nimero a buscar") Leer (buscado} ‘fousco el nimero en el areglo recortiéndolo secuenclalmente (MIENTRAS i 00 [7] nero [i] <> buscado HACER ist FINMIENTRAS Meontcolotasalida de la estructura anterior S1i<= 100 Y] némer [l= buscado ENTONCES Escrbir(“E”, uscado, “esta en el arreglo en posicién’ i) INO Escrbir ("E, buscado, ‘no esta en el arreglo" FINS FINPROGRAMA © ‘icqueds inasla ‘+ cuando el ndmero de elementos del canjunte sobre el eval queremas buscar es grande la bisqueda lineal es ineficiente ‘6 Esmecesaria que ls elementes estén ordenados en el areglo pare hacer la busqueda binara ‘© Labisqueda procede meciante una sere de prucbas sucesivas en ol arreglo, ‘© primera prusba compara el valor del elemento que esta ala mitad del conjunto contra valor buscado, sel valor buscado es menor, entonces la segunda mitad del conjunto puede ignarase, En cambio sel valores mayor se considerar la segunda mitady se ignorar la primera mitad. ‘6a segunda prueta compara el valor de la mitad del conjunto que queda, sie valor buscado es menor se part e canjuntoy se descarta la segunda mitad, sis mayor se descartala primera mitad ‘6 be esta forma se cantina partiendo el conjunto buscando el valor hasta encontrato © hasta probar que no existe. Pruebas en busqueda binaria Funcién busBin tamafo, vector{100), valor: ENTERO): LOGICO VAR . band: LOGICO Inf, sup, mitad :ENTERO INIcio ‘iit inferior de a busqueda Inf= a ‘Jimite superior de a bisqueda sup = tamafio. ITERAR mitad= (inf +sup)/2_/determina la mitad de conjunto SUR 1 inf>= sup [0] vector [mitad] = valor Slvectar[mitad] < valor ENTONCES sup mitad- 1. //si buscado esta primer mitad conjunto siNo Inf = mitad-+1 si buscado ests en segunda mitad {eonjunto FINst FINTTERAR. Sector Imitad] = valor ENTONCES ‘band MI siNO band (F] FINS busBin= band RETORNO Pruebas en biisqueda binaria a) Elalgoritmo se puede mejorar agregando una comparacién preva aliterar para ver sel «elemento buscado esté fuera del rango del conjunto FUNCION busBin(tamafio, vector[100] valor: ENTERO}:LOGICO VaR band: LOGICO inf sup, mitad : ENTERO INICIO {iit inferior de ta bisqueds sup=tamaiio_// limite superior de la bisqueda valor < vector[1] 0] valor > veetor [tamafo] ENTONCES bus8in=[F] siNO ITERAR itad=(inf+ sup/2 determina la mitad del conjunto SALIR Linf > sup [0] vector (mitad} Sl vector [mitad] < valor ENTONCES sup="mitad-1 //sibuscado ests primer mitad siINo Inf= mitad +1 //sibuscado est en segunda ited inst FINITERAR ‘SI vector [mitad] = valor ENTONCES ‘band = MI siNO band =F] Fins busBin = band FINS! RETORNO © Oedenamiontn pr caleeeién ‘* También denominado Oréenamiento de Burbu)a, onsite on comparar elementos sucesvos@ intercamblar los elementos fuera de ‘+ Elmétodo termina cuando no hay Intercamblos que hacer durante una pacada a todo el conjunto de datos. '* 8, Paros para ordenar vector oe + Algoritmo PROCEDIMIENTO burbuja (cant, por ref vector [100}:ENTERO} VAR ij, aux ENTERO Seiak LOGICO Inicio. sefal= MI MIENTRAS sefal HACER al = [F] VARIAR | DESDE 1 HASTA cant 1 ‘vector [j]> vector [j+1] ENTONCES sefal= IM aux vector [j] vector {j]= vector [+1] vector [j+1] = aux FINS! FINVARIAR FINMIENTRAS FIN PROCEDIMIENTO © Oudenamionte por partciéno intercambio (quieksot ‘© Lalidea bisiea os usar los resultados de cada paso de comparacion para gular ol sigulonte paso de comparacin. ‘* Durante un paso los elementos se intercamblan de tal forma que cuando se completa el paso e conjunta se ha particionada de tal manera que las elementos de una particién son todos menores que un determinado valor y los elementos dela otraparticién son todos mayores {aunque desordenados) Fases de comparacién ye ee ty ie a ‘© twogo para aplicar la 26a fase se considera la sogunda partici, ‘© Amosida que avanzamot las parciones £0 acortan. (© (Algerttma completa en captula Ree Estructura de atns ee Card Guarda) ‘COMPLENDAD COMPUTACIONAL © Complejidad Computarional ‘© LaComplejiad compuaconal estuda los recursos requeridos durante el cslculo para resolver un problema, ‘© 4s, uncéleulo aie requeriré més recursos que uno de menor diicultad ‘© Los recursos estudiados son: > Tiempo: nimero de pasos de ejecucin de un algontmo, > Espacio: cantidad de memoria uiizada © chacificacdn de los prablomac Eestudio de ls procesos computacionaes, conduce a una casfcacién en dos grandes clases: > los problemas eon solueiny > los problemas sin sluci. Los problemas solucionables,requieren gran cantidad de recursos. © dan de camplojidad Flalgoritmamdsefciente es: > emis ripido lo mas comin) > el que ocupa menos memoria algunas veces) > Iaeficancia se expresa come funcisn del tama del problema Los problemas que tienen una solucén con orden de complejidad lineal son los que se resuelven en un tiempo que se relacionalinealmente con su tamafo © ihémn eo mide? '* Sabor con exactitud ol tempo que va a tardar un programa en dar una saliéa se vuelve tuna tarea muy dif hoy en dla, ‘¢ Enver de caleular el tempo exacto que va a tardar nuestro algoritmo se calcula la Cantidad de operaciones en funcién del tamafio de la entrada, Tamaflo dela entrada: es el tompa de 1 operacién © Unojempleclcien '*Elprobloma de l ordenacién de ndmeros, es uno de los més comunes ‘¢ Por eso existen bastantes algoritmos para resolver este problema. ‘© ¢cuales la cferencia entre ellos? : parte del nombre, La complelida. © Analicc dl algaritma Normalmente se habla de dos tpos: > Andliss del peor cas: ts calcularsufuncién de crecimiento dandole la poor de todas las entradas posible, > Analisis del caso promedio: Es ol promedio de cusnto tardarla nuestro algoritmo de cada una de las entradas posibles © Costa computarional © cules mejor? Edel peor caso es el mas cil de razonar, ‘© Para analizar el costo computacional de un algoritmo, se siguen tres pasos: el pear de las caso (ane que se ejacutan mic lineas el mas grande). acibaalinea de réign ‘Ver ruantac veees va aco ejrutaa eta linea de fig

You might also like