Clase 2 Arreglos
September 5, 2022 | Author: Anonymous | Category: N/A
Short Description
Download Clase 2 Arreglos...
Description
UNIVERSIDAD AUTÓNOMA DE ASUNCIÓN Facultad de Ciencias y TTecnolo ecnologías gías Departamento de Informática
CLASE 2 Arreglos Si tom tomam amo os la dec decisión de trata tratarr cad ada a tip tipo o de pro rob ble lem ma con dato atoss sim simp ple les, s, p pron ronto to nos nos daríam darí amos os cue cuenta nta del eno enorr me despe desperr dici dicio od de e titiem empo po,, alma almacen cenam amii ento y velocidad. Es p po or eso que para algun lguna as situa situaccione ioness la mejor jor so soluc lución so son n lo loss da dato toss estruc structura turado dos. s.
Definición Conjunto finito, ordenado, de elementos homogéneos. Los elementos de un arreglo pueden ser a su vez otro arreglo. También se les llama tablas. Los arreglos pueden p ueden ser unidimensionales y multidimensionales. multidi mensionales.
Arreglo Unidimensional (vector) Es un tipo de datos estructurado que está formado de una colección finita y ordenada de datos del mismo tipo (homogéneos). Es la estructura natural para modelar listas de elementos iguales. El tipo de acceso a los arreglos unidimensionales un idimensionales es el acceso directo, directo, es decir, podemos acceder a cualquier elemento del arreglo sin tener que consultar a elementos anteriores o posteriores, esto mediante el uso de un índice para cada elemento del arreglo que nos da su posición relativa. Para implementar arreglos unidimensionales se debe reservar espacio en memoria, y se debe proporcionar la dirección base del arreglo, la cola superior y la inferior. in ferior. l a siguiente Representación en memoria: Los arreglos se representan en memoria de la forma: X: array [1…5] of integer in teger
Vec(1) Vec(2) Vec(3) Vec(4) Vec(5)
______________________________________________ ________________ _________________________________________________ ___________________ Estructura de Datos y Archivos – Clase Nº 2 1
UNIVERSIDAD AUTÓNOMA DE ASUNCIÓN Facultad de Ciencias y TTecnolo ecnologías gías Departamento de Informática
Subínd Sub índice icess (índ (índice ices): s): Designan la posición de un elemento dentro del arreglo. Para hacer referencia al elemento se menciona el nombre del vector y el índ índice. ice. La notación A (L:U) indica que los índices están comprendidos entre L (límite inferior del arreglo) y U (límite superior del arreglo).
Rango: Números de elementos de un arreglo. Fórmula para hallar el rango de una arreglo unidimensional, donde A es el nombre del arreglo: A arreglo: A (L:U) = U-L+1
Arreglos Multidimensionales: Arreglos bidimensionales: bidimensionales: Un arreglo de dos dimensiones es es un arreglo donde cada elemento es, es, a su vez, otro arreglo. arreglo.
Subínd Sub índice icess (índ (índice ices): s): se necesitan dos índices, uno para designar la fila o renglón, otro para la columna. Se dice que un arreglo B(1:M,1:N), tiene M cantidad de filas y N cantidad c antidad de columnas. También se dice que el arreglo B es de dimensión dim ensión M*N. La notación B (L1: U1, L2: U2), indica que las filas de B están comprendidas entre L1 (límite inferior) U1 (límite superior), ambos inclusive, inclusive, y las columnas entre entre L2 y U2.
Rango: El número de elementos de B (L1: U1, L2: U2) = (U1- L1 + 1) * (U 2 – L2+1) Seccción trasve Sec trasversal: rsal: Se obtiene al mantener constante uno de los índices mientras se hace variar el otro índice. í ndice. Se denota comúnmente con un asterisco asterisco (*). (*). La notación B (*,4) indica que la columna column a 4 permanece inalterable. B (*,4)= B (1,4) B (2,4) B (3,4) B (4,4)…..B (M, 4).
Transpuesta: Se obtiene invirtiendo las posiciones del índice. Si B es dimensión M*N, la transpuesta de B (B T), será de dimensión M*N. Extensiones a más dimensiones:
Subínd Sub índice ices: s: debe especificar un índice para cada dimensión. Rango: Números de elementos de un arreglo multidimensional.
______________________________________________ ________________ _________________________________________________ ___________________ Estructura de Datos y Archivos – Clase Nº 2 2
UNIVERSIDAD AUTÓNOMA DE ASUNCIÓN Facultad de Ciencias y TTecnolo ecnologías gías Departamento de Informática
B (L1:U1, L2:U2, L3:U3,…..Ln:Un)= (U1-L1+1)*(U2-L2+1)*(U3-L3+1)*…..*(Un-Ln+1)
Formas de Almacenamiento Los diferentes esquemas de representación se evalúan en base a las l as siguientes características:
Simplicidad de acceso a los elementos
v arios caminos Facilidad de recorrer a través de varios
Eficiencia de almacenamiento
Facilidad de crecer
Arreglos unidimensionales Cuando el Límite inferior = uno Para calcular la dirección de inicio se debe conocer:
La dirección de inicio del d el espacio reservado para almacenar el arreglo (localidad base) base) (B). El tamaño de cada elemento en el arreglo (bytes ( bytes)) (S).
Localidad del elemento elemento I= B + (I -1) * S Generalización del límite inferior Para calcular la dirección del inicio se debe conocer, además el valor del límite (L), diferente de uno. Localidad del elemento elemento I= B + (I -L) * S Arreglos multidimensionales Se debe linealizar un arreglo multidimensional, debido a que la memoria de la computadora es lineal.
______________________________________________ ________________ _________________________________________________ ___________________ Estructura de Datos y Archivos – Clase Nº 2 3
UNIVERSIDAD AUTÓNOMA DE ASUNCIÓN Facultad de Ciencias y TTecnolo ecnologías gías Departamento de Informática
Or Orde den n por por r englón: englón: Se almacena en orden consecutivo, cada una de las filas: la primera fila, en primer lugar, luego l uego la segunda, hasta la última. A(1,1)
A(1,2)
A(1,5)
A(1,6)
A(2,1) A(2,2)
A(2,3) A(2,4) A(2,5)
A(2,6)
A(3,1)
A(3,3)
A(3,5)
A(3,6)
A(4,3) A(4,4) A(4,5)
A(4,6)
A(3,2)
A(4,1) A(4,2)
A(1,3)
A(1,4)
A(3,4)
Arreglo Ar reglo bidim idime ensio nsiona nall de orde rden n 4*6 4* 6 Alma nam mien iento to por ren rengló glón: n: Almacena 1ra. Fila
2da. Fila
3ra. Fila
1,
1,
1,
1,
1,
1,
2,
2,
2,
2,
2,
2,
3,
3,
3,
3,
3,
3,
1
2
3
4
5
6
1
2
3
4
5
6
1
2
3
4
5
6
Almacena Alma nam mien iento to por colu lum mna na:: 1ra. Col.
2da. Col.
3ra. Col
4ta. Col.
5ta. Col
1,
2,
3,
4,
1,
2,
3,
4,
1,
2,
3,
4,
1,
2,
3,
4,
1,
2,
1
1
1
1
2
2
2
2
3
3
3
3
4
4
4
4
5
5
Arreglos Triangulares Es un arreglo bidimensional cuadrado donde todos los elementos por encima (inferior) y por debajo (superior) de la diagonal principal son principal son cero.
Arreglo Triangular Superior
Arreglo Triangular Inferior
Diagonal principal: {1, -3, 2}
Diagonal principal: {2, 2,6}
______________________________________________ ________________ _________________________________________________ ___________________ Estructura de Datos y Archivos – Clase Nº 2 4
UNIVERSIDAD AUTÓNOMA DE ASUNCIÓN Facultad de Ciencias y TTecnolo ecnologías gías Departamento de Informática
El número máximo de elementos diferentes de ceros es N*(N+1)/2 N*(N+1)/2,, donde N es la dimensión del arreglo.
Arreglo Ar regloss estri stricctam tame ente trian tri angula gulares: res: Arreglos triangulares donde los elementos de la diagonal principal también son ceros.
______________________________________________ ________________ _________________________________________________ ___________________ Estructura de Datos y Archivos – Clase Nº 2 5
UNIVERSIDAD AUTÓNOMA DE ASUNCIÓN Facultad de Ciencias y TTecnolo ecnologías gías Departamento de Informática
Linealización: Como no es deseable almacenar gr an gran cantidaden deun ceros, unaunidimensional. alt alternativa ernativa es almacenar los elementos del triángulo inferior o superior arreglo 3
4
6
7
3
9
0
1
4
0
1
5
0
0
2
4
9
1
0
0
0
0
2
4
0
0
0
0
5
2
0
0
0
0
0
4
Arreglo Ar reglo tri tria angu ngula larr su sup perio ri or Inicial Vector Valor
1 1 1 3
1 2 2 4
1 3 3 6
1 4 4 7
1 5 5 3
1 6 6 9
2 2 7 1
2 3 8 4
2 4 9 0
2 2 5 6 … 1 5
3 3
3 4
3 5
3 6
4 4
4 5
2
4
9
1
0
2
4 6 N 4
Espacio compartido: Otra alternativa para ahorrar espacio, es almacenar dos arreglos de la misma dimensión, uno inferior y otro superior, pueden compartir el espacio reservado para uno de ellos.
Arreglo Ar reglo tri tria angu ngula larr su sup perio ri or 3
4
6
7
3
9
0
1
4
0
1
5
0
0
2
4
9
1
0
0
0
0
2
4
0
0
0
0
5
2
0
0
0
0
0
4
______________________________________________ ________________ _________________________________________________ ___________________ Estructura de Datos y Archivos – Clase Nº 2 6
UNIVERSIDAD AUTÓNOMA DE ASUNCIÓN Facultad de Ciencias y TTecnolo ecnologías gías Departamento de Informática
Arreglo Ar reglo tri tria angu ngula larr inferio inferiorr 0 0
0 0
0 0
0 0
0 0
0 0
1
5
0
0
0
0
6
4
2
0
0
0
3
7
3
0
0
0
5
7
1
0
5
0
Alma Alm acena nam mien iento to en espa spacio compartido 3
4
6
7
3
9
0
1
4
0
1
5
1
5
2
4
9
1
6
4
2
0
2
4
3
7
3
0
5
2
5
7
1
0
5
4
Cambio de acomodo: Un problema surge cuando el arreglo deja de ser triangular. tri angular. Una alternativa es no permitir la actualización. Otro método es reconocer el cambio en llas as características del arreglo y transferirlo a su propio espacio.
Arreglos dispersos Son arreglos en los que existen gran cantidad de ceros alrededor del 90%. Linealización: Pueden ser almacenados en un vector a través de las técnicas de orden por renglón y por columna.
______________________________________________ ________________ _________________________________________________ ___________________ Estructura de Datos y Archivos – Clase Nº 2 7
UNIVERSIDAD AUTÓNOMA DE ASUNCIÓN Facultad de Ciencias y TTecnolo ecnologías gías Departamento de Informática
Representación vectorial: Almacenar en un vector los elementos diferentes de cero. 0
0
0
7
0
0
0
1
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
4
0
1
0
0
5
0
0
0
0
0
0
0
Arreglo Ar reglo dispe isperso rso
Representacii ón ve Representac vecctor torii al de dell arr arreglo eglo dispe disperr so Vector V(1) V(2) V(3) V(4) V(5) V(6)
Renglón 1 2 3 4 5 5
Columna 4 2 6 6 2 5
Valor 7 1 1 4 1 5
Representación de listas ligadas: Cada nodo contiene una indicación indicación del renglón y columna en el cual aparece la entrada diferente de cero, el valor de la entrada, y dos apuntadores. Un apuntador es hacia el siguiente nodo en el mismo renglón y el otro es para el sigui siguiente ente nodo en la misma columna. Por ejemplo: El siguiente arreglo de 5*4 1 0 2 0 0
0 -3 0 0 0
0 0 1 14 0
0 0 0 0 0
______________________________________________ ________________ _________________________________________________ ___________________ Estructura de Datos y Archivos – Clase Nº 2 8
UNIVERSIDAD AUTÓNOMA DE ASUNCIÓN Facultad de Ciencias y TTecnolo ecnologías gías Departamento de Informática
Se puede representar de la siguiente manera: cada nodo cabecera participa en dos listas ligadas: una para su renglón rengl ón y otra para su columna. En este ejemplo ejemplo hay 4 columnas y 5 filas. C1
C2
C3
C4
Nodos Cabecera
F1
F
C
V
1
1
1
F2
F3
F
C
V
2
2
-3
F
C
V
F
C
V
3
1
2
3
3
1
4
3
14
F4
F5
ARRAYS EN JAVA En Java los arrays son un objeto. Como tales se crean mediante el comando new (se verá su uso en el tema 5). La sintaxis en la definición de un array es la siguiente:
Ti po_dat os[ os [ ] nombr e_ar e_ ar r ay = new Ti po_dat os os[[ t amaño_ar r ay] ; Tipo_datos es el tipo de los datos que se almacenarán en el array (int, (in t, char, String... o cualquier objeto). Tamaño_array es tamaño que q ue le queremos dar a este array. Ve Veamos amos un ejemplo:
i nt [ ] edad ade es = new i nt [ 10] ; En este ejemplo hemos definido un array llamado edades, en el que podremos almacenar 10 datos tipo entero. El primer elemento de un array se sitúa en la posición 0, exactamente igual que en C. Si quisiésemos q uisiésemos realizar realizar un bucle que recorriese los elementos de este array escribiríamos un código del tipo:
______________________________________________ ________________ _________________________________________________ ___________________ Estructura de Datos y Archivos – Clase Nº 2 9
UNIVERSIDAD AUTÓNOMA DE ASUNCIÓN Facultad de Ciencias y TTecnolo ecnologías gías Departamento de Informática
publ i c cl ass Ej empl o5b{ publ i c st at i c v vo oi d mai n( St r i ng[ ] ar gs) { i nt [ ] edades = new i nt [ 10] ; f or ( i nt i = 0; i < 10; i ++) { edades[ i ] = i ; Syst em. out . pr i nt l n( “E “Ell ement o “ + i + edades[ i ] ) ; } i nt su sum m = 0; f or ( i nt i = 0; i < 10; i ++) { sum = sum + edades[ i ] ;
}
}
} Syst em. ou outt . pr i nt l n( “Su “Sum ma “ + sum) ;
TIPOS ENUMERADOS Esta característica del lenguaje sólo está disponible a partir de las versiones superiores de java. Los tipos de datos enumerados son un tipo de dato definido por el programador (no como ocurre con los tipos de datos primitivos). En su definición el programador debe indicar un conjunto de valores finitos sobre los cuales las variables de tipo enumeración deberán tomar valores. La principal funcionalidad de los tipos de datos enumerados es incrementar la legibilidad del programa. La mejor forma de comprender lo qué son es viéndolo; para definir un tipo de dato enumerado se emplea la sintaxis:
mod odii f i cador es en enum um Nombr eTi poE poEnu num mer ado{ ado{ V VA ALO LOR R1, VALO LOR R2, . . } Los posibles valores de "modificadores" serán vistos en el tema 5. El caso más habitual es que modificadores tome el valor "public". El nombre puede ser cualquier nombre válido dentro de Java. Entre las llaves se ponen los posibles valores que podrán tomar las variables de tipo enumeración, valores que habitualmente se escriben en letras mayúsculas. Un ejemplo de enumeración podría ser:
publ i c enum Semana { publ {LU LUN NES, ES, MARTES TES,, MI ÉR ÉRC COLES, J UEV EVES ES,, VI ERN ERNES, ES, SÁB SÁBAD ADO O, DOMI NGO}
______________________________________________ ________________ _________________________________________________ ___________________ Estructura de Datos y Archivos – Clase Nº 2 10
UNIVERSIDAD AUTÓNOMA DE ASUNCIÓN Facultad de Ciencias y TTecnolo ecnologías gías Departamento de Informática
Las definiciones de los tipos enumerados deben realizarse fuera del método main y y,, en general, fuera de cualquier método; es decir, deben realizarse directamente dentro del cuerpo de la clase. En el tema 5 se s e explicará detalladamente qué es una clase y qué es un método. Para definir una variable de la anterior enumeración se emplearía la siguiente sintaxis:
Seman ana a v var ar i ab abll e; y para darle un valor a las variables de tipo enumeración éstas deben asignarse a uno de los valores creados en su definición. El nombre del valor debe ir precedido del nombre de la propia enumeración:
var i abl e = Semana. DOMI NGO; Veamos un ejemplo de programa que q ue emplea enumeraciones:
publ i c cl ass Ej empl o5c { / / def i ni mos un t i po e en numer ado / / l os t i pos en enu umer ados de deb ben d de ef i ni r se si empr e f uer a / / del mai n y, más en gen ene er al , f uer a d de e cual cual qui er mét odo odo publ i c enum Semana { publ {LU LUN NES, ES, MARTES TES,, MI ER ERC COLES, J UEV EVES ES,, VI ERN ERNES, ES, SAB SABAD ADO O, DOMI NGO}; publ i c st at i c v vo oi d mai n( St r i ng[ ] ar gs) { / / def i ni mos un una a v va ar i abl e q qu ue p pe er t enece al t i po enum enu mer ad ado o Seman ana a / / y l e damos el va vall or que r ep eprr esent sent a el dí a mar t es Semana hoy = Semana ana.. MAR ARTES; TES; / / si el dí a se ca caye yese se e en n el f i n de semana ana no hay que t r abaj ar / / ob obsér sér ve vese se como g grr ac acii as a l a n nu umer aci aci ón del pr og ogrr ama e ess f áci l de e en nt ender i f ( hoy == == Semana. DOMI NGO | | hoy = == = Semana. SAB SABAD ADO O) { Syst em. out . pr i nt l n( " Hoy t oca descan scansar" ) ; } el se { System. out . pr i nt l n( "H "Ho oy t oca t r abaj ar ") ; }
______________________________________________ ________________ _________________________________________________ ___________________ Estructura de Datos y Archivos – Clase Nº 2 11
UNIVERSIDAD AUTÓNOMA DE ASUNCIÓN Facultad de Ciencias y TTecnolo ecnologías gías Departamento de Informática
}
}
______________________________________________ ________________ _________________________________________________ ___________________ Estructura de Datos y Archivos – Clase Nº 2 12
UNIVERSIDAD AUTÓNOMA DE ASUNCIÓN Facultad de Ciencias y TTecnolo ecnologías gías Departamento de Informática
Bibliografía LOOMIS, Mary. Estructura de Datos y Organización de Archivos, 2da. Edición. Edición. 1991. México. Editorial Prentice-Hall Hispanoamericana S.A. Tutorial de javaHispano http://javahispano.org http://javahispano.org
______________________________________________ ________________ _________________________________________________ ___________________ Estructura de Datos y Archivos – Clase Nº 2 13
View more...
Comments