Subido por matildebracho

UNIDAD IV - ACTIVIDAD 1 - INFORME SOBRE ARREGLO YOSUE PIÑA

Anuncio
UNIVERSIDAD DR. JOSE GREGORIO HERNÁNDEZ
FACULTAD DE INGENIERÍA
UNIDAD CURRICULAR: PROGRAMACION ESTRUCTURADA
PROFESORA: MARISELA DE LOS ANGELES ZABALA PARADA
UNIDAD IV
ACTIVIDAD 1 –
INFORME SOBRE ARREGLO
ALUMNO:
YOSUE PIÑA
C.I: 31.036.086
MARACAIBO, JULIO DEL 2022.
¿Qué es un Arreglo?
Un arreglo (vector, array, matriz) es un conjunto de datos o una estructura de datos
homogéneos que se encuentran ubicados en forma consecutiva en la memoria RAM (sirve para
almacenar datos en forma temporal). Un arreglo es una lista (conjunto) de datos con un número
fijo
de
componentes,
todos
del
mismo tipo,
que
están
referenciados
bajo
un
mismo nombre. Cada componente del arreglo se puede acceder mediante índices (0, 1, 2, 3, …)
encerradas entre corchetes [ ].
Tipos de Arreglos
➢ ARREGLOS UNIDIMENSIONALES
Un arreglo unidimensional es la estructura natural para modelar listas de elementos
iguales. Están formados por una colección finita y ordenada de datos del mismo tipo. Los datos
que se guarden en los arreglos todos deben ser del mismo tipo. Se caracteriza por ser un acceso
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.
Los arreglos nos permiten hacer un conjunto de operaciones para manipular los datos
guardados en ellos, estas operaciones son: ordenar, buscar, insertar, eliminar, modificar entre
otras.
Un arreglo unidimensional es un tipo de dato que permite almacenar un conjunto de datos
homogéneos, es decir, del mismo tipo de dato. Al declararse el arreglo debe indicarse el tamaño,
en ese momento el compilador reserva la memoria que se necesite para almacenar los datos
solicitados por el programador.
El límite en la dimensión de los arreglos varía dependiendo del lenguaje de programación que
se utilice, siendo el límite natural la memoria de la computadora.
Imagínese que un arreglo es como un conjunto de lockers. Cada locker tiene cierto tamaño
para guardar objetos en él y todos son de las mismas dimensiones. Para diferenciar entre ellos
e identificar uno en particular, cada locker posee un número único con el cual puede ser
encontrado. Un arreglo funciona de la misma forma. Al declararse se debe especificar el tamaño,
es decir el número de localidades de memoria. Es como si se declararan muchas variables del
mismo tipo al mismo tiempo y asociadas todas ellas a un nombre en común.
➢ ARREGLOS BIDIMENSIONALES
Los arreglos bidimensionales son tablas de valores. Cada elemento de un arreglo
bidimensional está simultáneamente en una fila y en una columna.
En matemáticas, a los arreglos bidimensionales se les llama matrices, y son muy utilizados en
problemas de Ingeniería. En un arreglo bidimensional, cada elemento tiene una posición que se
identifica mediante dos índices: el de su fila y el de su columna.
Los arreglos bidimensionales también son provistos por NumPy, por lo que debemos comenzar
importando las funciones de este módulo:
−
from numpy import *
Al igual que los arreglos de una dimensión, los arreglos bidimensionales también pueden ser
creados usando la función array, pero pasando como argumentos una lista con las filas de la
matriz:
−
a = array([[5.1, 7.4, 3.2, 9.9],
[1.9, 6.8, 4.1, 2.3],
[2.9, 6.4, 4.3, 1.4]])
➢ ARREGLOS MULTIDIMENSIONALES
Los arreglos multidimensionales son una ampliación de las matrices de dos dimensiones y
utilizan subíndices adicionales para la indexación. Un arreglo 3D, por ejemplo, utiliza tres
subíndices.
Los
dos
primeros
son
como
una
matriz,
pero
la
tercera
dimensión
representa páginas u hojas de elementos.
Es un arreglo donde los elementos se encuentran organizados en varias dimensiones. Se
utilizan cuando se necesita almacenar múltiples valores del mismo tipo, también permite agrupar
muchos datos usando un mismo identificador y la memoria utilizada por los arreglos se conoce
como memoria estática.
Para el caso de dos dimensiones es natural asociarlo con una matriz, y por tanto en filas y
columnas. Cuando son tres o más dimensiones es complicado pensar en una asociación sencilla
sin embargo en general se debe tener un índice para cada dimensión que se haya declarado en
el arreglo.
Si continuamos con la analogía de los lockers, podemos asociar un arreglo de dos dimensiones
con un conjunto de lockers del mismo tamaño acomodados en forma filas y columnas.
En este caso considere que para identificar un locker en específico se puede utilizar su posición
en la fila y en la columna. En este caso se puede incrementar la cantidad de lockers si aumenta
el número de filas y/o columnas.
Por esta razón es que en un arreglo multidimensional se necesita de un índice por cada
dimensión. Entonces, para el caso de una matriz dimensional se necesitan dos índices, uno para
los renglones y otro para las columnas.
¿Cómo se declara un arreglo en Lenguaje C++?
Los vectores son un tipo de array (arreglos). Son, de hecho, un array de una sola dimensión y
forman parte de la amplia variedad de estructuras de datos que nos ofrece C++, siendo además
una de las principales y más útiles estructuras que podremos tener como herramienta de
programación. Los vectores o arrays o arreglos de una dimensión (como los quieras llamar), son
utilizados para almacenar múltiples valores en una única variable. En un aspecto más profundo,
este tipo de arrays (vectores), permiten almacenar muchos valores en posiciones de memoria
continuas, lo cual permite acceder a un valor u otro de manera rápida y sencilla. Estos valores
pueden ser números, letras o cualquier tipo de variable que deseemos incluso tipos de datos
complejos.
Para declarar un vector en C++, se deben seguir las mismas normas básicas que se siguen
para declarar una variable cualquiera, con un pequeño cambio en la sintaxis. Para declarar un
vector, arreglo o como lo quieras llamar, necesitaremos saber el tipo de los datos que irán al
interior de este, es decir, serán número enteros, o número decimales o cadenas de texto, etc.
necesitamos también, como siempre, un nombre para el vector y un tamaño máximo. La sintaxis
para declarar un vector en C++ es la siguiente:
−
tipo_de_dato nombre_del_vector[tamanio];
Tenemos entonces, que para declarar un vector en C++, debemos definirle un tipo de los datos,
sea entero, float, string, entre otros., debemos darle un nombre y al interior de los corchetes "[ ]"
debemos poner el tamaño máximo que tendrá el vector, es decir la cantidad máxima de datos
que podrá contener (recuerda que en C++ esto es necesario hacerlo).
¿Qué métodos de ordenamiento y búsqueda se pueden realizar en un arreglo?
ORDENAMIENTO.
Uno de los procedimientos más comunes y útiles en el procesamiento de datos, es la
clasificación u ordenación de estos. Se considera ordenar al proceso de reorganizar un conjunto
dado de objetos en una secuencia determinada. Cuando se analiza un método de ordenación,
hay que determinar cuántas comparaciones e intercambios se realizan para el caso más
favorable, para el caso medio y para el caso más desfavorable.
La colocación en orden de una lista de valores se llama Ordenación. Por ejemplo, se podría
disponer una lista de valores numéricos en orden ascendente o descendente, o bien una lista de
nombres en orden alfabético. La localización de un elemento de una lista se llama búsqueda.
Tal operación se puede hacer de manera más eficiente después de que la lista ha sido
ordenada. Existen varios métodos para ordenamiento, clasificados en tres formas:

Intercambio.

Quicksort.

Selección.

Inserción.
En cada familia se distinguen dos versiones: un método simple y directo, fácil de comprender,
pero de escasa eficiencia respecto al tiempo de ejecución, y un método rápido, más sofisticado
en su ejecución por la complejidad de las operaciones a realizar, pero mucho más eficiente en
cuanto a tiempo de ejecución. En general, para arreglos con pocos elementos, los métodos
directos son más eficientes (menor tiempo de ejecución) mientras que para grandes cantidades
de datos se deben emplear los llamados métodos rápidos.

Intercambio
El método de intercambio se basa en comparar los elementos del arreglo e
intercambiarlos si su posición actual o inicial es contraria inversa a la deseada.
Pertenece a este método el de la burbuja clasificado como intercambio directo. Aunque
no es muy eficiente para ordenar listas grandes, es fácil de entender y muy adecuado
para ordenar una pequeña lista de unos 100 elementos o menos. Una pasada por la
ordenación de burbujeo consiste en un recorrido completo a través del arreglo, en el que
se comparan los contenidos de las casillas adyacentes, y se cambian si no están en
orden. La ordenación por burbujeo completa consiste en una serie de pasadas
("burbujeo") que termina con una en la que ya no se hacen cambios porque todo está
en orden.

Quicksort.
Si bien el método de la burbuja era considerado como el peor método de ordenación
simple o menos eficiente, el método Quicksort basa su estrategia en la idea intuitiva de
que es más fácil ordenar una gran estructura de datos subdividiéndolas en otras más
pequeñas introduciendo un orden relativo entre ellas. En otras palabras, si dividimos el
array a ordenar en dos subarrays de forma que los elementos del subarray inferior sean
más pequeños que los del subarray superior, y aplicamos el método reiteradamente, al
final tendremos el array inicial totalmente ordenado. Existen además otros métodos
conocidos, el de ordenación por montículo y el de shell.

Selección.
Los métodos de ordenación por selección se basan en dos principios básicos:
Seleccionar
el
Colocarlo
en
elemento
la
más
posición
pequeño
más
(o
baja
(o
más
grande)
del
arreglo.
alta)
del
arreglo.
más
A diferencia del método de la burbuja, en este método el elemento más pequeño (o más
grande) es el que se coloca en la posición final que le corresponde.

Inserción.
El fundamento de este método consiste en insertar los elementos no ordenados del
arreglo en subarreglos del mismo que ya estén ordenados. Dependiendo del método
elegido para encontrar la posición de inserción tendremos distintas versiones del método
de inserción.
BÚSQUEDA.
La búsqueda es una operación que tiene por objeto la localización de un elemento dentro de
la estructura de datos. A menudo un programador estará trabajando con grandes cantidades de
datos almacenados en arreglos y pudiera resultar necesario determinar si un arreglo contiene un
valor
que
coincide
con
algún
valor
clave
o
buscado.
Siendo el array de una dimensión o lista una estructura de acceso directo y a su vez de acceso
secuencial, encontramos dos técnicas que utilizan estos dos métodos de acceso, para encontrar
elementos dentro de un array: búsqueda lineal y búsqueda binaria.

Búsqueda Secuencial: La búsqueda secuencial es la técnica más simple para buscar
un elemento en un arreglo. Consiste en recorrer el arreglo elemento a elemento e ir
comparando con el valor buscado (clave). Se empieza con la primera casilla del arreglo
y se observa una casilla tras otra hasta que se encuentra el elemento buscado o se han
visto todas las casillas. El resultado de la búsqueda es un solo valor, y será la posición
del elemento buscado o cero. Dado que el arreglo no está en ningún orden en particular,
existe la misma probabilidad de que el valor se encuentra ya sea en el primer elemento,
como en el último. Por lo tanto, en promedio, el programa tendrá que comparar el valor
buscado
con
la
mitad
de
los
elementos
del
arreglo.
El método de búsqueda lineal funciona bien con arreglos pequeños o para arreglos no
ordenados. Si el arreglo está ordenado, se puede utilizar la técnica de alta velocidad de
búsqueda binaria, donde se reduce sucesivamente la operación eliminando repetidas
veces la mitad de la lista restante.

Búsqueda Binaria; La búsqueda binaria es el método más eficiente para encontrar
elementos en un arreglo ordenado. El proceso comienza comparando el elemento central
del arreglo con el valor buscado. Si ambos coinciden finaliza la búsqueda. Si no ocurre
así, el elemento buscado será mayor o menor en sentido estricto que el central del arreglo.
Si el elemento buscado es mayor se procede a hacer búsqueda binaria en el subarray
superior, si el elemento buscado es menor que el contenido de la casilla central, se debe
cambiar el segmento a considerar al segmento que está a la izquierda de tal sitio central.
Descargar