Está en la página 1de 15

ARREGLOS

2018

Representación tabulada de una función. Tipo base y tipo índice.


Arreglos uni-dimensionales y n-dimensionales. Recorrido.
Esquemas de ordenación: por inserción directa, por selección
directa, por intercambio directo, por partición. Esquemas de
búsqueda. Búsqueda en arreglos ordenados. Arreglos de
registros.
Tabla de contenido
ARREGLOS.................................................................................................................................................... 2

INTRODUCCIÓN................................................................................................................................................... 2
ARREGLOS ......................................................................................................................................................... 2
Uso del índice de un Arreglo ...................................................................................................................... 3
Acceso y recorrido ...................................................................................................................................... 5
ARREGLOS BIDIMENSIONALES ................................................................................................................................ 5
ARRAYS MULTIDIMENSIONALES ............................................................................................................................. 7

PROCESOS CON ARREGLOS .......................................................................................................................... 8

PROCESO DE CARGA O INICIALIZACIÓN .................................................................................................................... 8


RECORRIDO........................................................................................................................................................ 8
BÚSQUEDA ........................................................................................................................................................ 8
BÚSQUEDA LINEAL ..................................................................................................................................... 9
BÚSQUEDA DICOTÓMICA O BINARIA....................................................................................................... 10
ORDENAMIENTO ............................................................................................................................................... 10
Ordenamiento por Burbuja: ..................................................................................................................... 10
Ordenamiento por Selección Directa ....................................................................................................... 12
Ordenamiento por Inserción Directa: ...................................................................................................... 13

Página 1
Arreglos

Introducción

Una estructura de datos es una colección de datos que pueden ser caracterizados por su
organización y las operaciones que se definen en ella. Las estructuras de datos son muy
importantes en los sistemas de computadora. Los tipos de datos más frecuentes utilizados en los
diferentes lenguajes de programación son:

Las estructuras de datos estáticas son aquellas en las que el tamaño ocupado en memoria se
define antes de que el programa se ejecute y no puede modificarse dicho tamaño durante la
ejecución del programa. Estas estructuras están implementadas en casi todos los lenguajes: array
(vectores/tablas-matrices), registros, ficheros o archivos.

Las estructuras de datos dinámicas no tienen las limitaciones o restricciones en el tamaño de


memoria ocupada que son propias de las estructuras estáticas. Las estructuras dinámicas por
excelencia son las listas —enlazadas, pilas, colas—, árboles —binarios, árbol-b, búsqueda binaria—
y grafos.

Arreglos

Un array o arreglo (matriz o vector) es un conjunto finito y ordenado de elementos homogéneos.


La propiedad “ordenado” significa que el elemento primero, segundo, tercero, ..., enésimo de un
array puede ser identificado.

Los elementos de un array son homogéneos, es decir, del mismo tipo de datos. Un array puede
estar compuesto de todos sus elementos de tipo cadena, otro puede tener todos sus elementos
de tipo entero, etc.

Página 2
El tipo más simple de array es el array unidimensional o vector (matriz de una dimensión).

Ejemplo: Un vector de una dimensión denominado NOTAS que consta de n elementos.

El subíndice o índice de un elemento (1, 2, ..., i, n) designa su posición en la ordenación del vector.

Uso del índice de un Arreglo


Cada referencia a un arreglo incluye el nombre y el índice encerrado con corchetes: el índice
determina que el elemento se procesa.

La definición de la cantidad de componentes del arreglo está dada por la LONGITUD. La cantidad
de índices indica la DIMENSIÓN del arreglo.

Los vectores, como ya se ha comentado, pueden contener datos no numéricos, es decir, tipo
“carácter”. Por ejemplo, un vector que representa las frutas que se venden en un supermercado:

Otro ejemplo de un vector pueden ser los nombres de los alumnos de una clase. El vector se
denomina ALUMNOS y tiene treinta elementos de rango o longitud.

Página 3
Los vectores se almacenan en la memoria central de la computadora en un orden adyacente. Así,
un vector de cincuenta números denominado NUMEROS se representa gráficamente por
cincuenta posiciones de memoria sucesivas.

Cada elemento de un vector se puede procesar como si fuese una variable simple al ocupar una
posición de memoria (NUMEROS[25]).

Esta propiedad significa que cada elemento de un vector —y posteriormente una tabla o matriz—
es accesible directamente y es una de las ventajas más importantes de usar un vector: almacenar
un conjunto de datos.

Los vectores no puede leer/escribir con una sola operación. La lectura/escritura de un arreglo de
hace elemento a elemento y para poder realizarlos se debe visualizar los componentes del mismo,
a través de estructuras repetitivas.

Página 4
Acceso y recorrido

Arreglos Bidimensionales

El array bidimensional se puede considerar como un vector de vectores. Es, por consiguiente, un
conjunto de elementos, todos del mismo tipo, en el cual el orden de los componentes es
significativo y en el que se necesita especificar dos subíndices para poder identificar cada
elemento del array.

Página 5
En notación estándar, normalmente el primer subíndice se refiere a la fila del array, mientras que
el segundo subíndice se refiere a la columna del array. Es decir, B[I, J] es el elemento de B que
ocupa la Iª fila y la Jª columna

Ejemplo:

La matriz T representa una tabla de notaciones de saltos de altura (primer salto), donde las filas
representan el nombre del atleta y las columnas las diferentes alturas saltadas por el atleta. Los
símbolos almacenados en la tabla son: x, salto válido; 0, salto nulo o no intentado.

Página 6
Arrays Multidimensionales

Un array puede ser definido de tres dimensiones, cuatro dimensiones, hasta de n-dimensiones.
Los conceptos de rango de subíndices y número de elementos se pueden ampliar directamente
desde arrays de una y dos dimensiones a estos arrays de orden más alto. En general, un array de
n-dimensiones requiere que los valores de los n subíndices.

Ejemplo:

Un array de tres dimensiones puede ser uno que contenga los datos relativos al número de
estudiantes de la universidad ALFA de acuerdo a los siguientes criterios:

• cursos (primero a quinto),

• sexo (varón/hembra),

• diez facultades.

Página 7
Procesos con Arreglos
Las operaciones que se pueden realizar con vectores durante el proceso de resolución de un
problema son:

Proceso de Carga o Inicialización

Inicialización: Se hace un recorrido total asignando un primer valor a cada elemento.


Generalmente se usa para poner a cero las posiciones del arreglo con el objeto de utilizarlos como
acumuladores.

Carga

Consiste en colocar contenidos en el arreglo, capturados desde el exterior. Son contenidos


variables que varían de uno a otro. Los mismos son capturados desde un archivo o desde el
exterior.

Recorrido
Si el recorrido es Total, se recorren todos los elementos del arreglo, se utiliza una estructura
iterativa del tipo “For”. Éste recorrido a su vez puede ser Lógico o Ilógico, el primero es cuando se
recorre de a un elemento y desde el primero al último, de menor a mayor. El segundo es cuando
se contradice esto, es decir, se recorre desde el mayor índice al menor de ellos. Cuando el
recorrido es Parcial solo se accede a algunos elementos, no a todos.

Búsqueda
Consiste en producir un recorrido sobre el arreglo a fin de detectar un contenido particular.
Existen dos posibles estados finales: el éxito o el fracaso.

Página 8
BÚSQUEDA LINEAL
PURA O SIMPLE: Consiste en recorrer todo el arreglo desde el valor inicial hasta el final,
comparando cada elemento con el valor buscado. Al finalizar la búsqueda se deberá
informar donde se encontró el elemento en caso de que la búsqueda haya tenido éxito o
la no existencia del elemento en caso contrario. Este método se aplica tanto a arreglos
ordenados como desordenados. La búsqueda no finaliza al encontrar la primera ocurrencia
sino que permite encontrar múltiples ocurrencias. Apunta a la multiplicidad de éxitos. Los
éxitos se trabajan dentro del ciclo y los fracasos fuera. Número de comparaciones como
máximo: tantas como elementos hay en el arreglo (recorre todo el arreglo aunque el
elemento se haya encontrado en la primera posición)

CON CENTINELA: El recorrido no es total, la búsqueda finaliza cuando se encuentra la


primera ocurrencia o bien cuando se encuentra el primer elemento mayor al buscado
(cuando el arreglo esta ordenado). El número de comparaciones es incierto, pero como
mínimo hasta que se encuentre el elemento, lo que obliga a que el ciclo sea manejado por
una condición. Este tipo de métodos se lo puede utilizar tanto en arreglos ordenados
como desordenados. En el caso de estar ordenados se lo puede optimizar y es mucho más
eficiente. Es muy lento cuando el número de elementos del arreglo es grande y no admite
búsquedas múltiples.

Página 9
BÚSQUEDA DICOTÓMICA O BINARIA
Una búsqueda binaria se basa en el principio “Divide y Vencerás”. Consiste en dividir o fraccionar
el arreglo e ir comparando el elemento central con el valor buscado. A medida que se avanza en la
búsqueda se analizan partes más pequeñas de arreglo. Cada vez que se realiza la búsqueda se
descarta el 50% de las posiciones que se esta analizando (campo de búsqueda). Se avanza de a
saltos. Al iniciar la búsqueda nos debemos posicionar en la mitad del arreglo (se calcula con el
rango definido en el ambiente). Se descarta uno de las dos mitades de acuerdo a si el valor del
elemento buscado es mayor o menor que el elemento central y se calcula el punto medio de la
otra mitad. La búsqueda finalizará cuando se encuentra el valor deseado o bien cuando se anula el
intervalo de búsqueda. Número máximo de comparaciones Log2 N. La búsqueda lineal es mas
rápida cuando el número de elementos del arreglo es pequeño (se tienen menos operaciones,
asignaciones y líneas de escribir). La diferencia con la binaria se evidencia cuando crece el número
de elementos en el arreglo.

Ordenamiento
Consiste en recorrer el arreglo para ordenar sus elementos con algún criterio, por ejemplo de
menor a mayor.

Los tipos de ordenación son:


1. DIRECTOS: Lista pequeña, algoritmo sencillo (burbuja, selección, inserción)
2. INDIRECTOS: Lista grande (shell ordenación rápida, ordenación por mezcla)

Ordenamiento por Burbuja: El algoritmo de intercambio directo se basa en el principio de


comparar e intercambiar pares de elemento adyacentes hasta que todos estén ordenados. Se los
conoce generalmente como método de la “burbuja” porque si se mira al arreglo como si estuviera

Página
10
en posición vertical, en lugar de horizontal, los elementos se consideran burbujas en un depósito
de agua, con pesos acordes con sus claves. En cada pasada una burbuja asciende hasta el nivel de
peso que le corresponde. El algoritmo de intercambio directo admite algunas mejoras:
 Puede ocurrir que a partir de una cierta pasada esta no tenga ningún efecto sobre el orden de los
elementos por estar estos ya ordenados. La mejora entonces, consiste en controlar se han
producido intercambios en una pasada. Una última pasada sin intercambios es necesaria para que
el algoritmo termine; entonces este es el caso de intercambio directo con test de comprobación.
 Esta mejora puede aumentar, si se controla, además de si se ha producido un cambio, el índice
(posición) del último intercambio. Es claro que los elementos por debajo de este índice ya están
ordenados. En consecuencia las pasadas subsiguientes se harán hasta ese índice, por lo que este
es el caso de intercambio con test de comprobación y cota. También llamado “burbuja mejorado”.
 Otra mejora: puede ocurrir que haya una sola burbuja mal ubicada en el extremo derecho del
arreglo. Este elemento se situara en la posición correcta en una pasada. O puede suceder que haya
una sola burbuja mal ubicada en el extremo izquierdo del arreglo, este elemento se situara en su
posición correcta a un ritmo de una posición por pasada. Esto sugiere una tercera mejora: la
alternancia en la dirección de dos pasadas. Este es el caso del método de la sacudida. Pero todas
estas mejoras reducen el número de comparaciones y no el número de movimientos. A pesar de
todas estas mejoras el método de intercambio directo es el más lento de los tres métodos de
ordenamiento.

Página
11
Ordenamiento por Selección Directa
Este método se basa en los siguientes principios:
a) Encontrar el elemento con clave mínima
b) Intercambiarlo con el primero
A continuación estas operaciones se repiten con los elementos n-1, n-2, etc., restantes, hasta que
quede un único elemento, el mayor.

 Requiere 𝑁 2 Operaciones.

Este método es en cierta forma opuesto al de inserción directa: Este considera en cada paso, un
único elemento en la secuencia origen y todos los elementos de la secuencia destino para
encontrar el lugar de inserción, mientras que el de selección directa considera a todos los
elementos de la secuencia origen para encontrar el elemento con la clave mínima y depositarlo
como elemento siguiente de la secuencia destino.

Como conclusión podemos afirmar que en general el método de selección directa es más rápido
que el de inserción directa.

Página
12
Ordenamiento por Inserción Directa: Los elementos están divididos conceptualmente en una
secuencia origen ai…. an una secuencia destino a1…. ai-1. En cada caso, empezando con i=2, e
incrementado i de uno en uno, se toma el elemento (x) de la secuencia origen y se lo transfiere a
la secuencia destino insertándolo en el sitio adecuado. En el proceso de encontrar el sitio
adecuado, conviene alternar comparaciones y movimientos, es decir “dejar caer x”, comparándolo
con el elemento inmediato precedente aj, como consecuencia se inserta x o se mueve aj a su
derecha y se continúa con el inmediato por la izquierda, según el mismo proceso. Observemos que
en este proceso de “caída” existen dos condiciones diferentes de terminación:
1) Se encuentra un elemento aj con clave menor que la de x.
2) Se alcanza el extremo izquierdo de la secuencia destino

Página
13
Página
14

También podría gustarte