Está en la página 1de 34

Arreglos

Programacin I

MC Beatriz Beltrn Martnez

Definicin
Un arreglo es un conjunto finito e indexado de elementos homogneos, que se referencian por un identificador comn (nombre). La propiedad indexado significa que el elemento primero, segundo, hasta el n-simo de un arreglo pueden ser identificados por su posicin ordinal. Un arreglo es una coleccin finita, homognea y ordenada de elementos del mismo tipo.
MC Beatriz Beltrn Martnez FCC - BUAP Primavera 2012 32

Definicin

De manera formal se define un arreglo de tamao n de los elementos de tipo A, es un elemento del espacio n-dimensional del conjunto A, es decir, X es arreglo de tamao n del tipo A si y solo si XAn.

MC Beatriz Beltrn Martnez

FCC - BUAP

Primavera 2012

33

Representacin

n-1

n elementos

Los arreglos pueden contener un mnimo de cero elementos hasta un mximo de n elementos.
MC Beatriz Beltrn Martnez FCC - BUAP Primavera 2012 34

Clasificacin
Los arreglos se clasifican en:
Unidimensionales (Vectores): un slo ndice Bidimensionales (Tablas o Matrices): dos ndices Multidimensionales: ms de dos ndices

MC Beatriz Beltrn Martnez

FCC - BUAP

Primavera 2012

35

Arreglos Unidimensionales
Programacin I

MC Beatriz Beltrn Martnez

Caractersticas
Los arreglos unidimensionales deben cumplir lo siguiente:
Compuesto por un nmero de elementos finito. Tamao fijo: el tamao del arreglo debe ser conocido en tiempo de compilacin. Homogneo: 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 posicin de memoria.
MC Beatriz Beltrn Martnez FCC - BUAP Primavera 2012 37

Definicin
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];
MC Beatriz Beltrn Martnez FCC - BUAP Primavera 2012 38

Operaciones
Asignacin
La manera de asignar (insertar) un valor en cada elemento del arreglo unidimensional es mediante el subndice que indica la posicin, se puede utilizar la siguiente forma: <NombreVector>[subndice] = <Valor>;

Ejemplo:
A[1] =10; pais[2] = 2.56; precio[3] = precio[2]+10.5;
MC Beatriz Beltrn Martnez FCC - BUAP Primavera 2012 39

Operaciones
Lectura
La lectura se realiza de la siguiente manera: for (i=0; i<n; i++) scanf(%d , &A[i]);

Escritura
Consiste en asignarle un valor a cada elemento del arreglo: for (i=0; i<n; i++) printf (\n %d , A[i]);
MC Beatriz Beltrn Martnez FCC - BUAP Primavera 2012 40

Cadenas
Programacin I

MC Beatriz Beltrn Martnez

Conceptos Bsicos
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.
MC Beatriz Beltrn Martnez FCC - BUAP Primavera 2012 42

Conceptos Bsicos
La longitud de una cadena es el nmero de caracteres que contiene. La cadena vaca es la que no tiene ningn carcter y se representa como . El ltimo carcter de la cadena marca el fin de la cadena, que corresponde al carcter \0. Este carcter ocupa un espacio en el arreglo.

MC Beatriz Beltrn Martnez

FCC - BUAP

Primavera 2012

43

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 an 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 carcter de cadena2.
MC Beatriz Beltrn Martnez FCC - BUAP Primavera 2012 44

Instrucciones
compara strcmp (cadena1, cadena2): Compara la cadena1 con la cadena2, y devuelve:
0 si cadena1=cadena2 entero mayor a cero si cadena1>cadena2 entero menor a cero si cadena1<cadena2

tamao strlen (cadena): Devuelve la longitud de la cadena sin contar el terminador nulo.
MC Beatriz Beltrn Martnez FCC - BUAP Primavera 2012 45

Ordenamiento
Programacin I

MC Beatriz Beltrn Martnez

Clasificacin por intercambio directo


Uno de los mtodos de clasificacin ms simples que puede haber es el llamado clasificacin de burbuja (bubblesort). La idea bsica de este algoritmo es imaginar que los elementos estn 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.
MC Beatriz Beltrn Martnez FCC - BUAP Primavera 2012 47

Clasificacin por intercambio directo


Procedimiento burbuja
Inicio Para i 1 a n-1 hacer Para j n a i+1 con decrementos de 1 hacer Si A[j] < A[j-1] entonces temp A[j] A[j] A[j-1] A[j-1] temp Fin_si Fin_para Fin_para Fin
MC Beatriz Beltrn Martnez FCC - BUAP Primavera 2012 48

Clasificacin por intercambio directo


Este algoritmo admite un poco de mejoramiento. El algoritmo por vibracin es una variante del algoritmo burbuja pero mejorado. Este algoritmo consiste en recordar cul fue el ltimo intercambio realizado y en qu momento.

MC Beatriz Beltrn Martnez

FCC - BUAP

Primavera 2012

49

Clasificacin por intercambio directo


Procedimiento shakeSort
Inicio l2 rn k n Repetir Para jr a l decrementos 1 hacer Si A[j-1] > A[j] entonces temp A[j] A[j] A[j-1] A[j-1] temp kj Fin_si Fin_para l k+1
MC Beatriz Beltrn Martnez FCC - BUAP

Para j l a r hacer Si A[j-1] > A[j] entonces temp A[j] A[j] A[j-1] A[j-1] temp kj Fin_si Fin_para r k-1 Hasta l > r Fin

Primavera 2012

50

Clasificacin por insercin


Este mtodo consiste en reubicar en el lugar correcto cada uno de los elementos a ordenar, es decir, en el isimo 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 podran dar terminado el proceso de clasificacin: 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.
MC Beatriz Beltrn Martnez FCC - BUAP Primavera 2012 51

Clasificacin por insercin


Procedimiento insercionDirecta Inicio Para i 2 a n hacer A[0]A[i] j i Mientras A[j] < A[j-1] hacer temp A[j] A[j] A[j-1] A[j-1] temp j j-1 Fin_mientras Fin_para Fin
MC Beatriz Beltrn Martnez FCC - BUAP Primavera 2012 52

Clasificacin por insercin


Si 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 rpidamente el punto de insercin. La eleccin es una bsqueda binaria que prueba la secuencia destino en la mitad y contina buscando hasta encontrar el punto de insercin.
MC Beatriz Beltrn Martnez FCC - BUAP Primavera 2012 53

Clasificacin por insercin


Procedimiento insercionBinaria Inicio Para i 2 a n hacer x A[i] L1 Ri Mientras L < R hacer m (L+R) div 2 Si A[m] <= x entonces L m+1 Sino Rm Fin_si Fin_mientras Para ji a R+1 (decremento en 1) hacer A[j] A[j-1] Fin_para A[R] x Fin_para Fin
MC Beatriz Beltrn Martnez FCC - BUAP Primavera 2012 54

Clasificacin por seleccin directa


Este mtodo se basa en los siguientes principios: 1. Seleccionar el elemento que tenga la llave menor. 2. Intercambiarlo con el primer elemento 1. 3. Repetir despus estas operaciones con los n-1 elementos restantes, luego con n-2 elementos hasta que no quede ms que un elemento (el ms grande).
MC Beatriz Beltrn Martnez FCC - BUAP Primavera 2012 55

Clasificacin por seleccin directa


Procedimiento seleccionDirecta Inicio Para 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_si fin_para A[k] A[i] A[i] x fin_para Fin
MC Beatriz Beltrn Martnez FCC - BUAP Primavera 2012 56

Mtodos de clasificacin avanzados


Insercin por decremento decreciente
Un refinamiento de la insercin directa fue propuesto por D.L. Shell en 1959.

MC Beatriz Beltrn Martnez

FCC - BUAP

Primavera 2012

57

Mtodos de clasificacin avanzados


Procedimiento shellSort Inicio h[1]9 h[2]5 h[3] 3 h[4] 1 Para m 1 a t hacer // t es el tamao del arreglo h k h[m] s-k Para i k+1 a n hacer xA[i] ji-k Si s=0 entonces s-k fin_si ss+1 A[s]x Mientras x<A[j] hacer A[j+k]A[j] jj-k fin_mientras A[j+k]x fin_para fin_para Fin
MC Beatriz Beltrn Martnez FCC - BUAP Primavera 2012 58

Bsqueda
Programacin I

MC Beatriz Beltrn Martnez

Bsqueda Lineal
La tarea de bsqueda es una de las ms frecuentes en programacin. Para los siguientes algoritmos vamos a suponer que la coleccin de los datos en donde vamos a buscar, es fija, y que es de tamao n. La tarea consiste en hallar un elemento cuya clave sea igual al argumento de bsqueda.

MC Beatriz Beltrn Martnez

FCC - BUAP

Primavera 2012

60

Bsqueda Lineal
Cuando los elementos no llevan un orden y no existe informacin sobre ellos se utiliza la bsqueda lineal, es decir, comparar uno a uno los elementos hasta encontrar el deseado. Existen dos condiciones que ponen fin a la bsqueda. Se encuentra el elemento. Se ha rastreado toda la coleccin y no se encuentra el elemento.
MC Beatriz Beltrn Martnez FCC - BUAP Primavera 2012 61

Bsqueda Lineal
Procedimiento busquedaLineal (elemento) Inicio i0 Mientras (i < N) y (A[i] <> elemento) hacer ii+1 Fin_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 posicin i-sima del arreglo.
MC Beatriz Beltrn Martnez FCC - BUAP Primavera 2012 62

Bsqueda Binaria
Para utilizar este algoritmo es necesario que la coleccin este ordenada. La idea clave consiste en inspeccionar el elemento medio y compararlo con el elemento de bsqueda x.
Si es igual a x, la bsqueda termina; si es menor que x, inferimos que todos los elementos con ndices menores que o iguales a m pueden ser eliminados, y nuestra bsqueda ahora se centra en los dems elementos. Esto se repite mientras el ndice inicial sea menor o igual que el final y el elemento no sea encontrado.
MC Beatriz Beltrn Martnez FCC - BUAP Primavera 2012 63

Bsqueda Binaria
Procedimiento busquedaBinaria(x) Inicio L 0 RN found false Mientras L< R y not (found) hacer m(L+R) div 2 Si A[m]=x entonces foundtrue Sino Si A[m] < x entonces L m+1 Sino R m fin_si fin_si fin_mientras Fin
MC Beatriz Beltrn Martnez FCC - BUAP Primavera 2012 64

También podría gustarte