Está en la página 1de 20

Introducción a la computación

Clase 9
Arreglos en C++

Prof. Marcos Alania


alania.vicente@gmail.com

Lima, 15 Agosto, 2020


¿En que se usan los arreglos?

• Probabilidades
• Estadística
• Óptica
• Economía
• Teoría de juegos
• Criptografía
• Química
• Electromagnetismo
• Mecánica clásica
• Literalmente en todas las ramas de la física
• Ecuaciones diferenciales
• Ecuaciones diferenciales parciales
• Aprendizaje maquina (Machine learning)
• Sistemas de control
• Análisis numérico
• Etc.

2
¿En que se usan los arreglos?

Arreglo bidimensional (matriz)


Compresión de imagen

La imagen de muestra mas usada en la compresión de imágenes corresponde a Lena Soderberg (de
soltera Sjööblom), motivo por el cual fue la invitada de honor de la 50ª Conferencia Anual de la Society
for Imaging Science in Technology, en 1997.

3
¿En que se usan los arreglos?
La comparación de resultados experimentales (derecha) con cálculos
teóricos (izquierda) obtenidos para las mismas condiciones, para la
interacción de un haz coherente de electrones con gas de helio. El excelente
match es la evidencia más fuerte de los efectos de dispersión coherentes en
el experimento.
Teórico Experimental

[1]. Coherent Electron Scattering Captured by an Attosecond Quantum Stroboscope, Mauritsson, J. et al, Phys. Rev. Lett., vol 100, 2008.
Algoritmos de ordenamiento

 Ordenar: Reagrupar o reorganizar un conjunto


de datos u objetos en una secuencia específica
 Formalmente: Se define la ordenación de la
siguiente forma:
• Sea 𝐴 una lista de 𝑁 elementos {𝐴1 , 𝐴2 , 𝐴3 … 𝐴𝑛 }.
Ordenar significa permutar estos elementos de tal forma
que los mismos queden de acuerdo a un orden
predeterminado

• Ascendente: 𝐴1 ≤ 𝐴2 ≤ 𝐴3 ≤ … ≤ 𝐴𝑛

• Descendente: 𝐴1 ≥ 𝐴2 ≥ 𝐴3 ≥ … ≥ 𝐴𝑛

5
Algoritmos de ordenamiento
 Al ordenar los datos se pueden presentar de
tres formas:
• Peor caso: que los datos estén ordenado en sentido
inverso
10 11 12 13 18 19 20

• Mejor caso: que los datos estén ordenado


20 19 18 13 12 11 10

• Caso promedio: Que estén ordenado de forma aleatoria


20 19 11 12 18 13 10

6
Ordenamiento interno

 Métodos directos
• Se caracterizan por ser cortos, fácil de
programar y entender. Pero ineficientes
para el tratamiento de una larga data.

 Métodos logarítmicos
• Son métodos más sofisticados que los
métodos directos, su elaboración y
comprensión es más abstracta, pero
bastante eficientes debido a la menor
cantidad de comparaciones que realiza.

7
Métodos directos
Los métodos directos se pueden clasificar de las
siguientes categorías:

 Ordenamiento por intercambio


• El método mas conocido es el método
de la burbuja.
• Método de intercambio por vibración

 Ordenamiento por inserción


• Método de inserción directa.
• Método de inserción por decremento
decreciente.
 Ordenamiento por selección
• El método por selección directa.
8
Métodos directos
Método de la burbuja

• Se comparan pares de elementos adyacentes.


• Si A[j-1] es mayor que A[j], se permutan.
• Se continúa hasta que todos se encuentren ordenados.
• En cada pasada se transporta el elemento más pequeño
hacia la izquierda del vector.
Si a[j-1] > a[j], se permutan

Elementos ya
ordenados Se busca el i-ésimo elemento más pequeño, j
varía desde N hasta i+1

9
Métodos directos
Algoritmo del método de la burbuja

Inicio
para i  1 hasta N hacer
para j  N hasta i+1 hacer (-1)
si A[j] < A[j-1] entonces
aux  A[j]
A[j]  A[j-1]
A[j-1]  aux
fin_para
fin_para
Fin

10
Métodos logarítmicos
Los métodos logarítmicos se pueden clasificar de
las siguientes categorías:
 Ordenamiento por partición
• QuickSort
• MergeSort
• HeapSort

11
Métodos logarítmicos
Método QuickSort
 Se basa en el hecho que es más fácil ordenar dos listas
pequeñas que una grande. Se basa en la estrategia “divide y
vencerás”
 Los elementos a ordenar se dividen en dos grupos: Uno con
todos los valores menores o iguales a cierto valor específico
y otra con todos los valores mayores a ese valor.
 El valor elegido puede ser cualquier valor arbitrario del
vector. Este valor se le llama comúnmente pivote.
 Básicamente quickSort trabaja así:
• Se elige el pivote (usualmente el elemento a la mitad de
la lista)

12
Métodos logarítmicos
Método QuickSort

• Se divide la lista en dos partes. Para esto se establecen


dos índices (izquierdo y derecho) que se mueven hasta
encontrarse. Se trata que todos los elementos a la
izquierda del pivote sean menores que este y los
elementos a la derecha sean mayores.
• Si bien se tiene ahora dos listas con valores menores y
mayores al pivote, estas pueden no estar ordenadas,
entonces se vuelve a aplicar el método a cada uno de
los subconjuntos

13
Métodos logarítmicos
Método QuickSort

• Se recorre la lista desde el extremo izquierdo y se busca


un elemento mayor que 13 (se encuentra el 18). Se
busca entonces, desde el extremo derecho un valor
menor que 13 ( se encuentra el 4). Se intercambian
estos valores.
Después del intercambio
18 11 27 13 9 4 16 4 11 27 13 9 18 16

Izq pivote Der Izq pivote Der


• Se sigue recorriendo el vector por la izquierda y por la
derecha e intercambiando los valores incorrectos hasta
que los índices Izq y Der se crucen. En este punto se
tendrá que todos los valores a la derecha son mayores y
que todos los valores a la izq, son menores que el
pivote.
14
Métodos logarítmicos
Método QuickSort
Después del intercambio
4 11 27 13 9 18 16 4 11 9 13 27 18 16

Izq pivoteDer Izq pivoteDer


< >
Ordenar partición izquierda
4 11 9 13 27 18 16 4 11 9 13 27 18 16
Der Izq Izq Der
pivote pivote

• Ninguna de ambas listas está ordenada; sin embargo,


basados en los resultados de la primera partición, se
pueden ordenar las dos particiones independientemente y
al final la lista completa estará ordenada

15
Métodos logarítmicos
Algoritmo del método QuickSort

Inicio
establecer x al valor de un elemento
arbitrario de la lista
mientras división no este terminada hacer
recorrer de izq a der para un valor >= x
recorrer de der a izq para un valor =< x
si valores localizados no ordenados
entonces
intercambiar los valores
fin_si
fin_mientras
Fin

16
Matrices
Operaciones con matrices

Trasposición de matrices

Suma y diferencia de matrices

Producto de una matriz por un número

Producto de matrices

Propiedades simplificativas

Matrices invertibles

17
Algoritmo de la matriz transpuesta

18
Algoritmo de suma de matrices

19
Algoritmo de producto de matrices

20

También podría gustarte