![Page 1: Programación IMC José Andrés Vázquez Flores. Definición Un arreglo es un conjunto finito e indexado de elementos homogéneos, que se referencian por un](https://reader033.vdocuments.mx/reader033/viewer/2022051821/5665b4451a28abb57c909463/html5/thumbnails/1.jpg)
Arreglos
Programación I MC José Andrés Vázquez Flores
![Page 2: Programación IMC José Andrés Vázquez Flores. Definición Un arreglo es un conjunto finito e indexado de elementos homogéneos, que se referencian por un](https://reader033.vdocuments.mx/reader033/viewer/2022051821/5665b4451a28abb57c909463/html5/thumbnails/2.jpg)
Definición
Un arreglo es un conjunto finito e indexado de elementos homogéneos, que se referencian por un identificador común (nombre). La propiedad indexado significa que el elemento primero, segundo, hasta el n-ésimo de un arreglo pueden ser identificados por su posición ordinal.
Un arreglo es una colección finita, homogénea y ordenada de elementos del mismo tipo.
2
![Page 3: Programación IMC José Andrés Vázquez Flores. Definición Un arreglo es un conjunto finito e indexado de elementos homogéneos, que se referencian por un](https://reader033.vdocuments.mx/reader033/viewer/2022051821/5665b4451a28abb57c909463/html5/thumbnails/3.jpg)
Definición
De manera formal se define un arreglo de tamaño n de los elementos de tipo A, es un elemento del espacio n-dimensional del conjunto A, es decir, X es arreglo de tamaño n del tipo A si y solo si XAn.
3
![Page 4: Programación IMC José Andrés Vázquez Flores. Definición Un arreglo es un conjunto finito e indexado de elementos homogéneos, que se referencian por un](https://reader033.vdocuments.mx/reader033/viewer/2022051821/5665b4451a28abb57c909463/html5/thumbnails/4.jpg)
Representación
Los arreglos pueden contener un mínimo de cero elementos hasta un máximo de n elementos.
4
0 n-1
n elementos
![Page 5: Programación IMC José Andrés Vázquez Flores. Definición Un arreglo es un conjunto finito e indexado de elementos homogéneos, que se referencian por un](https://reader033.vdocuments.mx/reader033/viewer/2022051821/5665b4451a28abb57c909463/html5/thumbnails/5.jpg)
Clasificación
Los arreglos se clasifican en:
Unidimensionales (Vectores): un sólo índice
Bidimensionales (Tablas o Matrices): dos
índices
Multidimensionales: más de dos índices
5
![Page 6: Programación IMC José Andrés Vázquez Flores. Definición Un arreglo es un conjunto finito e indexado de elementos homogéneos, que se referencian por un](https://reader033.vdocuments.mx/reader033/viewer/2022051821/5665b4451a28abb57c909463/html5/thumbnails/6.jpg)
Arreglos Unidimensionales
Programación I MC José Andrés Vázquez Flores
![Page 7: Programación IMC José Andrés Vázquez Flores. Definición Un arreglo es un conjunto finito e indexado de elementos homogéneos, que se referencian por un](https://reader033.vdocuments.mx/reader033/viewer/2022051821/5665b4451a28abb57c909463/html5/thumbnails/7.jpg)
Características
Los arreglos unidimensionales deben cumplir lo siguiente: Compuesto por un número de elementos finito. Tamaño fijo: el tamaño del arreglo debe ser conocido
en tiempo de compilación. Homogéneo: todos los elementos son del mismo tipo. Son almacenados en posiciones contiguas de memoria,
cada uno de los cuales se les puede acceder directamente.
Cada elemento se puede procesar como si fuese una variable simple ocupando una posición de memoria.
7
![Page 8: Programación IMC José Andrés Vázquez Flores. Definición Un arreglo es un conjunto finito e indexado de elementos homogéneos, que se referencian por un](https://reader033.vdocuments.mx/reader033/viewer/2022051821/5665b4451a28abb57c909463/html5/thumbnails/8.jpg)
Definición
Para definir en lenguaje C un arreglo. Se tiene: Tipo nom_var[TAM];
El arreglo que se define inicia en 0, y termina en TAM-1, con un total de TAM elementos del tipo definido
Ejemplo: int A[100]; float X[N];
8
![Page 9: Programación IMC José Andrés Vázquez Flores. Definición Un arreglo es un conjunto finito e indexado de elementos homogéneos, que se referencian por un](https://reader033.vdocuments.mx/reader033/viewer/2022051821/5665b4451a28abb57c909463/html5/thumbnails/9.jpg)
Operaciones
AsignaciónLa manera de asignar (insertar) un valor en
cada elemento del arreglo unidimensional es mediante el subíndice que indica la posición, se puede utilizar la siguiente forma:
<NombreVector>[subíndice] = <Valor>;Ejemplo:
A[1] =10;pais[2] = 2.56;precio[3] = precio[2]+10.5;
9
![Page 10: Programación IMC José Andrés Vázquez Flores. Definición Un arreglo es un conjunto finito e indexado de elementos homogéneos, que se referencian por un](https://reader033.vdocuments.mx/reader033/viewer/2022051821/5665b4451a28abb57c909463/html5/thumbnails/10.jpg)
Operaciones
LecturaLa lectura se realiza de la siguiente manera:
for (i=0; i<n; i++) scanf(“%d ”, &A[i]);
EscrituraConsiste en asignarle un valor a cada elemento
del arreglo:for (i=0; i<n; i++) printf (“\n %d ”, A[i]);
10
![Page 11: Programación IMC José Andrés Vázquez Flores. Definición Un arreglo es un conjunto finito e indexado de elementos homogéneos, que se referencian por un](https://reader033.vdocuments.mx/reader033/viewer/2022051821/5665b4451a28abb57c909463/html5/thumbnails/11.jpg)
CadenasProgramación I MC José Andrés Vázquez Flores
![Page 12: Programación IMC José Andrés Vázquez Flores. Definición Un arreglo es un conjunto finito e indexado de elementos homogéneos, que se referencian por un](https://reader033.vdocuments.mx/reader033/viewer/2022051821/5665b4451a28abb57c909463/html5/thumbnails/12.jpg)
Conceptos Básicos
Una cadena es un conjunto de caracteres incluido el espacio en blanco.
Por ejemplo:“Hola”“123vb”“v bg%.”
Generalmente una cadena va encerrada entre comillas.
12
![Page 13: Programación IMC José Andrés Vázquez Flores. Definición Un arreglo es un conjunto finito e indexado de elementos homogéneos, que se referencian por un](https://reader033.vdocuments.mx/reader033/viewer/2022051821/5665b4451a28abb57c909463/html5/thumbnails/13.jpg)
Conceptos Básicos
La longitud de una cadena es el número de caracteres que contiene.
La cadena vacía es la que no tiene ningún carácter y se representa como “”.
El último carácter de la cadena marca el fin de la cadena, que corresponde al carácter ‘\0’.
Este carácter ocupa un espacio en el arreglo.
13
![Page 14: Programación IMC José Andrés Vázquez Flores. Definición Un arreglo es un conjunto finito e indexado de elementos homogéneos, que se referencian por un](https://reader033.vdocuments.mx/reader033/viewer/2022051821/5665b4451a28abb57c909463/html5/thumbnails/14.jpg)
Instrucciones
Se hace uso de la biblioteca <string.h>.strcpy (cadena1, cadena2): Copia el contenido
de la cadena2 en la cadena1, si las dos cadenas se superponen, el resultado es impredecible. La copia se realiza aún cuando las cadenas no sean de la misma longitud.
strcat (cadena1, cadena2): Anexa la cadena2 al final de la cadena1. El terminador nulo de cadena1 se reemplaza por el primer carácter de cadena2.
14
![Page 15: Programación IMC José Andrés Vázquez Flores. Definición Un arreglo es un conjunto finito e indexado de elementos homogéneos, que se referencian por un](https://reader033.vdocuments.mx/reader033/viewer/2022051821/5665b4451a28abb57c909463/html5/thumbnails/15.jpg)
Instrucciones
compara strcmp (cadena1, cadena2): Compara la cadena1 con la cadena2, y devuelve:0 si cadena1=cadena2entero mayor a cero si cadena1>cadena2entero menor a cero si cadena1<cadena2
tamaño strlen (cadena): Devuelve la longitud de la cadena sin contar el terminador nulo. 15
![Page 16: Programación IMC José Andrés Vázquez Flores. Definición Un arreglo es un conjunto finito e indexado de elementos homogéneos, que se referencian por un](https://reader033.vdocuments.mx/reader033/viewer/2022051821/5665b4451a28abb57c909463/html5/thumbnails/16.jpg)
OrdenamientoProgramación I MC José Andrés Vázquez Flores
![Page 17: Programación IMC José Andrés Vázquez Flores. Definición Un arreglo es un conjunto finito e indexado de elementos homogéneos, que se referencian por un](https://reader033.vdocuments.mx/reader033/viewer/2022051821/5665b4451a28abb57c909463/html5/thumbnails/17.jpg)
Clasificación por intercambio directo
Uno de los métodos de clasificación más simples que puede haber es el llamado “clasificación de burbuja” (bubblesort).
La idea básica de este algoritmo es imaginar que los elementos están como burbujas en un tanque de agua con pesos correspondientes a sus claves, cada pase sobre el arreglo produce el ascenso de una burbuja hasta su nivel adecuado de peso.
17
![Page 18: Programación IMC José Andrés Vázquez Flores. Definición Un arreglo es un conjunto finito e indexado de elementos homogéneos, que se referencian por un](https://reader033.vdocuments.mx/reader033/viewer/2022051821/5665b4451a28abb57c909463/html5/thumbnails/18.jpg)
Clasificación por intercambio directoProcedimiento burbuja
Inicio
Para i 1 a n-1 hacerPara j n a i+1 con decrementos de 1 hacer
Si A[j] < A[j-1] entoncestemp A[j]A[j] A[j-1]A[j-1] temp
Fin_siFin_para
Fin_paraFin
18
![Page 19: Programación IMC José Andrés Vázquez Flores. Definición Un arreglo es un conjunto finito e indexado de elementos homogéneos, que se referencian por un](https://reader033.vdocuments.mx/reader033/viewer/2022051821/5665b4451a28abb57c909463/html5/thumbnails/19.jpg)
Clasificación por intercambio directo
Este algoritmo admite un poco de mejoramiento.
El algoritmo por vibración es una variante del algoritmo burbuja pero mejorado.
Este algoritmo consiste en “recordar” cuál fue el último intercambio realizado y en qué momento.
19
![Page 20: Programación IMC José Andrés Vázquez Flores. Definición Un arreglo es un conjunto finito e indexado de elementos homogéneos, que se referencian por un](https://reader033.vdocuments.mx/reader033/viewer/2022051821/5665b4451a28abb57c909463/html5/thumbnails/20.jpg)
Clasificación por intercambio directoProcedimiento shakeSortInicio
l2 r n k nRepetir
Para jr a l decrementos 1 hacerSi A[j-1] > A[j] entoncestemp A[j]A[j] A[j-1]A[j-1] tempk j
Fin_siFin_paral k+1
Para j l a r hacerSi A[j-1] > A[j]
entoncestemp A[j]A[j] A[j-1]A[j-1] tempk j
Fin_siFin_parar k-1
Hasta l > rFin
20
![Page 21: Programación IMC José Andrés Vázquez Flores. Definición Un arreglo es un conjunto finito e indexado de elementos homogéneos, que se referencian por un](https://reader033.vdocuments.mx/reader033/viewer/2022051821/5665b4451a28abb57c909463/html5/thumbnails/21.jpg)
Clasificación por inserciónEste método consiste en reubicar en el lugar
correcto cada uno de los elementos a ordenar, es decir, en el i-ésimo recorrido se “inserta” el i-ésimo elemento A[i] en el lugar correcto, entre A[1], A[2], ..., A[i-1], los cuales fueron ordenados previamente.
Existen dos condiciones distintas que podrían dar terminado el proceso de clasificación:1. Se encuentra un elemento A[j] que tiene una llave
menor que la de A[i].2. El extremo izquierdo de la secuencia destino es
alcanzado.21
![Page 22: Programación IMC José Andrés Vázquez Flores. Definición Un arreglo es un conjunto finito e indexado de elementos homogéneos, que se referencian por un](https://reader033.vdocuments.mx/reader033/viewer/2022051821/5665b4451a28abb57c909463/html5/thumbnails/22.jpg)
Clasificación por inserciónProcedimiento insercionDirecta
InicioPara i 2 a n hacer
A[0]A[i] j iMientras A[j] < A[j-1] hacer
temp A[j]A[j] A[j-1]A[j-1] tempj j-1
Fin_mientrasFin_para
Fin22
![Page 23: Programación IMC José Andrés Vázquez Flores. Definición Un arreglo es un conjunto finito e indexado de elementos homogéneos, que se referencian por un](https://reader033.vdocuments.mx/reader033/viewer/2022051821/5665b4451a28abb57c909463/html5/thumbnails/23.jpg)
Clasificación por inserciónSi notamos que la secuencia destino
A[2]...A[i-1] donde se debe insertar el elemento, ya está ordenada.
Este algoritmo puede ser mejorado determinando rápidamente el punto de inserción.
La elección es una búsqueda binaria que prueba la secuencia destino en la mitad y continúa buscando hasta encontrar el punto de inserción.
23
![Page 24: Programación IMC José Andrés Vázquez Flores. Definición Un arreglo es un conjunto finito e indexado de elementos homogéneos, que se referencian por un](https://reader033.vdocuments.mx/reader033/viewer/2022051821/5665b4451a28abb57c909463/html5/thumbnails/24.jpg)
Clasificación por inserciónProcedimiento insercionBinaria
InicioPara i 2 a n hacer
x A[i] L1 RiMientras L < R hacer
m (L+R) div 2Si A[m] <= x entonces
L L+1Sino R mFin_si
Fin_mientrasPara ji a R+1 (decremento en 1) hacer
A[j] A[j-1]Fin_paraA[R] x
Fin_paraFin
24
![Page 25: Programación IMC José Andrés Vázquez Flores. Definición Un arreglo es un conjunto finito e indexado de elementos homogéneos, que se referencian por un](https://reader033.vdocuments.mx/reader033/viewer/2022051821/5665b4451a28abb57c909463/html5/thumbnails/25.jpg)
Clasificación por selección directa
Este método se basa en los siguientes principios:
1. Seleccionar el elemento que tenga la llave menor.
2. Intercambiarlo con el primer elemento 1.3. Repetir después estas operaciones con los n-
1 elementos restantes, luego con n-2 elementos hasta que no quede más que un elemento (el más grande).
25
![Page 26: Programación IMC José Andrés Vázquez Flores. Definición Un arreglo es un conjunto finito e indexado de elementos homogéneos, que se referencian por un](https://reader033.vdocuments.mx/reader033/viewer/2022051821/5665b4451a28abb57c909463/html5/thumbnails/26.jpg)
Clasificación por selección directaProcedimiento selecciónDirecta
InicioPara i1 a n-1 hacer
k i xA[i]Para j i+1 a n hacer
Si A[j] < x entonces k j x A[k]
fin_sifin_paraA[k] A[i] A[i] x
fin_para
Fin26
![Page 27: Programación IMC José Andrés Vázquez Flores. Definición Un arreglo es un conjunto finito e indexado de elementos homogéneos, que se referencian por un](https://reader033.vdocuments.mx/reader033/viewer/2022051821/5665b4451a28abb57c909463/html5/thumbnails/27.jpg)
Métodos de clasificación avanzados
Inserción por decremento decreciente
Un refinamiento de la inserción directa fue propuesto por D.L. Shell en 1959.
27
![Page 28: Programación IMC José Andrés Vázquez Flores. Definición Un arreglo es un conjunto finito e indexado de elementos homogéneos, que se referencian por un](https://reader033.vdocuments.mx/reader033/viewer/2022051821/5665b4451a28abb57c909463/html5/thumbnails/28.jpg)
Métodos de clasificación avanzadosProcedimiento shellSort
Inicioh[1]9 h[2]5 h[3] 3 h[4] 1Para m 1 a t hacer // t es el tamaño del arreglo h
k h[m] s-kPara i k+1 a n hacer
xA[i] ji-kSi s=0 entonces s-kfin_siss+1 A[s]xMientras x<A[j] hacer
A[j+k]A[j] jj-kfin_mientrasA[j+k]x
fin_parafin_para
Fin
28
![Page 29: Programación IMC José Andrés Vázquez Flores. Definición Un arreglo es un conjunto finito e indexado de elementos homogéneos, que se referencian por un](https://reader033.vdocuments.mx/reader033/viewer/2022051821/5665b4451a28abb57c909463/html5/thumbnails/29.jpg)
BúsquedaProgramación I MC José Andrés Vázquez Flores
![Page 30: Programación IMC José Andrés Vázquez Flores. Definición Un arreglo es un conjunto finito e indexado de elementos homogéneos, que se referencian por un](https://reader033.vdocuments.mx/reader033/viewer/2022051821/5665b4451a28abb57c909463/html5/thumbnails/30.jpg)
Búsqueda Lineal
La tarea de búsqueda es una de las más frecuentes en programación.
Para los siguientes algoritmos vamos a suponer que la colección de los datos en donde vamos a buscar, es fija, y que es de tamaño n.
La tarea consiste en hallar un elemento cuya clave sea igual al argumento de búsqueda. 30
![Page 31: Programación IMC José Andrés Vázquez Flores. Definición Un arreglo es un conjunto finito e indexado de elementos homogéneos, que se referencian por un](https://reader033.vdocuments.mx/reader033/viewer/2022051821/5665b4451a28abb57c909463/html5/thumbnails/31.jpg)
Búsqueda Lineal
Cuando los elementos no llevan un orden y no existe información sobre ellos se utiliza la búsqueda lineal, es decir, comparar uno a uno los elementos hasta encontrar el deseado.
Existen dos condiciones que ponen fin a la búsqueda. Se encuentra el elemento.Se ha rastreado toda la colección y no se encuentra
el elemento.
31
![Page 32: Programación IMC José Andrés Vázquez Flores. Definición Un arreglo es un conjunto finito e indexado de elementos homogéneos, que se referencian por un](https://reader033.vdocuments.mx/reader033/viewer/2022051821/5665b4451a28abb57c909463/html5/thumbnails/32.jpg)
Búsqueda LinealProcedimiento busquedaLineal (elemento)
Inicioi0Mientras (i < N) y (A[i] <> elemento) hacer
ii+1Fin_mientras
Fin
Si i al final es N entonces el elemento no fue encontrado, pero sino entonces quiere decir que el elemento esta en la posición i-ésima del arreglo.
32
![Page 33: Programación IMC José Andrés Vázquez Flores. Definición Un arreglo es un conjunto finito e indexado de elementos homogéneos, que se referencian por un](https://reader033.vdocuments.mx/reader033/viewer/2022051821/5665b4451a28abb57c909463/html5/thumbnails/33.jpg)
Búsqueda BinariaPara utilizar este algoritmo es necesario que la
colección este ordenada.La idea clave consiste en inspeccionar el
elemento medio y compararlo con el elemento de búsqueda x.Si es igual a x, la búsqueda termina; si es menor
que x, inferimos que todos los elementos con índices menores que o iguales a m pueden ser eliminados, y nuestra búsqueda ahora se centra en los demás elementos.
Esto se repite mientras el índice inicial sea menor o igual que el final y el elemento no sea encontrado.
33
![Page 34: Programación IMC José Andrés Vázquez Flores. Definición Un arreglo es un conjunto finito e indexado de elementos homogéneos, que se referencian por un](https://reader033.vdocuments.mx/reader033/viewer/2022051821/5665b4451a28abb57c909463/html5/thumbnails/34.jpg)
Búsqueda BinariaProcedimiento busquedaBinaria(x)
InicioL 0RN found falseMientras L< R y not (found) hacer
m(L+R) div 2Si A[m]=x entonces foundtrueSino
Si A[m] < x entoncesL m+1Sino R mfin_si
fin_sifin_mientras
Fin34