sábado, 30 de enero de 2010

Ejemplo de algoritmo

El problema consiste en encontrar el máximo de un conjunto de números. Para un ejemplo más complejo véase Algoritmo de Euclides.

Descripción de alto nivel
Dado un conjunto finito C de números, se tiene el problema de encontrar el número más grande. Sin pérdida de generalidad se puede asumir que dicho conjunto no es vacío y que sus elementos están numerados como .
Es decir, dado un conjunto se pide encontrar m tal que para todo elemento x que pertenece al conjunto C.
Para encontrar el elemento máximo, se asume que el primer elemento (c0) es el máximo; luego, se recorre el conjunto y se compara cada valor con el valor del máximo número encontrado hasta ese momento. En el caso que un elemento sea mayor que el máximo, se asigna su valor al máximo. Cuando se termina de recorrer la lista, el máximo número que se ha encontrado es el máximo de todo el conjunto.
Descripción formal
El algoritmo escrito de una manera más formal, esto es, en pseudocódigo tendría el siguiente aspecto:
Algoritmo Encontrar el máximo de un conjunto
función
//C es un conjunto no vacío de números//
// | C | es el número de elementos de C//

para hasta hacer si entonces devolver Sobre la notación:

• " " representa la asignación entre dos objetos. Por ejemplo, significa que el objeto m cambia su valor por el de x
• "devolver" termina el algoritmo y devuelve el valor a su derecha (en este caso, el máximo de C)
Implementación
En lenguaje C++:
int max(int c[], int n){
int i, m = c[0];
for (i = 1; i <> m) m = c[i];
return m;
}

No hay comentarios:

Publicar un comentario