Sunteți pe pagina 1din 28

Algoritmos

Definiciones de Algoritmos
Es un procedimiento computacional bien definido que toma algn valor, o un conjunto de valores, como entrada y produce algn valor, o un conjunto de valores, como salida. Es una secuencia de pasos computacionales para transformar la entrada en la salida. Es una herramienta para solucionar un problema computacional bien especificado.

Estratgia: Dividir para gobernar


Dividir el problema en subproblemas En la resolucin de un problema complejo, se divide en varios sub problemas y seguidamente se vuelven a dividir los sub problemas en otros mas sencillos, hasta que puedan implementarse en el computador.

Diseo top-down
Se entiende como diseo descendente ( Top-Down / Norte-Sur ) o diseo modular:
El proceso de ruptura del problema en cada etapa se llama refinamiento sucesivo.

Cada problema se resuelve mediante un modulo (subprograma)


y tiene un solo punto de entrada y un solo punto de salida. Un programa bien diseado consta de un programa principal (modulo de nivel mas alto) que llama a subprogramas (mdulos de nivel mas bajo), que a su vez pueden llamar otros subprogramas. Los programas que se estructuran de esta forma, se dicen que tienen diseo modular y el mtodo de romper el programa en modos pequeos se llama programacin modular.
1

Definicin formal del problema de bsqueda


Entrada: secuencia de n nmeros <a1, a2,..,an> Un nmero b Salida: un entero i, tal que b == ai (igual) 0 si b != ai, para i = 1,...,n Ejemplo instancia: Entrada: <5, 6, 9, 12> y 9 Salida: 3
1

Definicin formal del problema de ordenamiento


Entrada: secuencia de n nmeros <a1, a2,..,an> Salida: Una permutacin <a'1, a'2,..,a'n> reordenamiento de la secuencia, tal que: a'1 < a'2 < ... < a'n Ejemplo instancia: Entrada: <5,3,1,6,0> Salida: <0,1,3,5,6>
1

Definicin formal del problema clculo del factorial


Entrada: Nmero entero n Salida: Nmero entero fac(n) tal que: 0 si n < 0 1 si n == 0 fac(n) 1 si n == 1 n * fac(n-1) si n > 1

Ejemplo instancia: Entrada: 3 Salida: 6

Definicin formal del problema mximo comn divisor


Entrada: Nmeros enteros m,n Salida: Nmero entero mcd(n) tal que: n si m%n == 0 mcd(n) mcd(n, m%n) si m%n > 0

Ejemplo instancia: Entrada: 105, 6 Salida: 3

Algoritmos de Bsqueda

Algoritmos de Bsqueda
Definicin:Son algoritmos para encontrar un dato
dentro de una estructura o arreglo - Se ha desarrollado un conjunto de algoritmos de bsqueda que varan en complejidad, eficiencia y tamao del dominio de bsqueda. - Si se conoce por anticipado en qu tipo de orden inicial se encuentran los datos, es posible elegir un algoritmo que sea ms adecuado.

Tipos de Bsqueda

- Bsqueda Secuencial. - Bsqueda Binaria.

Bsqueda Secuencial
Consiste en ir comparando el elemento que se busca con cada elemento del arreglo hasta que se encuentra.
0 1 2 3 4 5 6 7 8 9

ndice resultado = 4

Algoritmo Bsqueda Secuencial

for (i=0; i < LARGO; i++) if (a[i]==Elemento_buscado) printf(Elemento encontrado en: %d\n, i);

Bsqueda Binaria
Los elementos del arreglo se encuentran ordenados y no estn repetidos. En cada iteracin el dominio de bsqueda se divide en 2.

20

32

45

60

73

32

32

32

Resultado = 4

Algoritmo Bsqueda Binaria


tipo A[LARGO] Max=LARGO-1; min=0; Encontrado=0; while(min+1<max && !Encontrado){ Medio=(Max+min)/2 if (A[Medio]==Elemento){ printf(Elemento Encontrado\n); Encontrado=1; /*Fuerza la salida del ciclo*/ } if (A[Medio]<Elemento) Max=Medio;

if (A[Medio]>Elemento) min=Medio;
}
1

Algoritmo de Bsqueda
Ejercicios: - Crear un programa que busque un caracter dentro de un vector. - Crear un programa que busque el nmero ms pequeo en un vector. - Buscar un nmero seleccionado dentro de un arreglo ordenado. - Hacer lo mismo pero con una lista encadenada.

Algoritmos de Ordenamiento

Algoritmos de Ordenamiento
Definicin:
Son algoritmos que fueron realizados para ordenar un conjunto de datos. Los algoritmos varan segn su facilidad de entendimiento, su eficiencia, cantidad de cdigo necesario para implementarlos, complejidad, requisitos necesarios de los datos.

Algoritmos de Ordenamiento
Tipos de Algoritmos:
1.- Ordenamiento Burbuja. 2.- Quick-Sort

Ordenamiento Burbuja
El algoritmo consiste en que los elementos ms pesados se hundan y los ms livianos salgan a flote.
25 32 15 25 15 32 25 15 1 15 25 1 32 15 1

1
25 32

15
25 32
1

32

Ordenamiento Burbuja
Algoritmo
for (i=Largo-1;i>0;i--)

for (j=0;j<i;j++)
if (A[j]>A[j+1]) Intercambiar(A[j],A[j+1]);

Algoritmos de Ordenamiento
Ejercicios:
- Ordenar un conjunto de n enteros de menor a mayor. - Lo mismo pero en lista encadenada

Bsqueda secuencial bidimensional por filas

Algoritmo:
tipo A[filas][columnas]

for (i=0;i<filas;i++)
for (j=0;j<columnas;j++) if (A[i][j]==elemento) printf(Encontrado en: A[%d][%d]\n,i,j);

Bsqueda secuencial bidimensional por columnas


Algoritmo:
tipo A[filas][columnas] for (j=0;j<columnas;j++) for (i=0;i<filas;i++) if (A[i][j]==elemento) printf(Encontrado en: A[%d][%d]\n,i,j);

Stack o Pila
Definicin:

Una pila es una estructura de datos, a la cual se le puede ingresar o sacar elementos por un slo lado. Tambin se conoce como LIFO (Last In First Out).

Stack o Pila (cont.)


Operaciones bsicas:
Insertar: inserta un elemento en el tope de la pila. Sacar: Saca un elemento del tope de la pila. Tope: Muestra el elemento ubicado en el tope de la pila. Vaca: Retorna verdadero si la pila est vaca.

Fila o cola
Definicin:

Una pila es una estructura de datos, a la cual se le puede ingresar elementos por un lado y retirar por el otro. Tambin se conoce como FIFO (First In First Out).

Fila o cola (cont.)


Operaciones bsicas:
Insertar: inserta un elemento alfinal de la fila. Sacar: Saca un elemento del inicio de la fila. Vaca: Retorna verdadero si la pila est vaca.

S-ar putea să vă placă și