Entradas

Mostrando las entradas etiquetadas como algoritmia

Algoritmos de clasificación y problema de cambio de monedas, en C

Hola. Revisando el disco duro de hace algunos años me he encontrado con unas prácticas de la carrera (del 2003-2004), el análisis y diseño de algoritmos de clasificación y la resolución del ejercicio (mediante ciertas técnicas) de cambio de monedas. Bien , pues ya es hora de compartir este trabajo, por si alguien lo necesita. Estos trabajos están hechos en C , en plataforma Linux . Se pueden descargar del repositorio de este blog , en: https://sites.google.com/site/elviajedelnavegante/documentacion Los ficheros son  ALGORITMOS DE ORDENACION.zip y PROBLEMA DEL CAMBIO DE MONEDAS.zip . Algoritmos de ordenación Este trabajo recoge el análisis, diseño e implementación, en C, de los algoritmos de clasificación más importantes, a saber: - Algoritmo de selección directa. - Algoritmo de burbuja. - Algoritmo de inserción directa. - Algoritmo de burbuja mejorado. - Algoritmo de QuickSort. - Algoritmo de MergeSort. - Algoritmo de QuickSort no recursivo. - Algoritmo de Merge...

Calcular tiempos de ejecución, en Python

Imagen
Hola. Una forma rápida y sencilla de evaluar un algoritmo es calcular el tiempo de ejecución del mismo, para ver si efectivamente es óptimo para nuestros intereses. Este tipo de análisis puede hacerse matemáticamente, ó si disponemos de algún "proceso" que nos indique la rapidez del mismo. No voy a entrar aquí sobre como calcular tiempos de ejecución O, Omega y demás cosas de estas. En este post vamos a ver la forma de calcular el tiempo de ejecución, en segundos, para cualquier algoritmo. Para nuestro ejemplo, mediremos el algoritmo de ordenación QuickSort . Lo que vamos a crear es, mediante una función decoradora , una función para calcular tiempos de ejecución. Nuestra función de medición es la siguiente: def cronometro(funcion): def funcion_a_ejecutar(*argumentos): # Tiempo de inicio de ejecución. inicio = time.time() # Lanzamos función a ejecutar. ret = funcion(*argumentos) # Tiempo de fin de ejecución. fin = time.time() ...

Problema de algoritmia, en Python

Imagen
Hola. En este post vamos a ver la resolución de un problema de Algoritmia típico, resuelto en Python. El enunciado me lo ha enviado un navegante , entusiasta de Python , como yo. Es el siguiente: A partir de una cadena introducida por el usuario, se trata de pintar una caja de texto con la propia cadena, utilizando espacios en blanco. La complejidad reside en cómo pintar las cadenas reversas, esto es, escritas al revés. Hay varias formas de resolver el problema. Con listas parece obvio, aunque yo lo he resuelto de la manera más fácil para mí, claro. Este es el código: # -*- coding: cp1252 -*- # Ángel Luis García García # Algoritmia while True: # Introducimos palabra. cadena = raw_input('Introduce palabra: ') # Si no escribimos nada, salimos. if len(cadena) == 0: break # Longitud de la cadena. long_cadena = len(cadena) # Espacio en blanco. blanco = " " * (long_cadena - 2) # Pintamos la cadena de arriba. print cadena # Pintamos las col...