<-- Back to list of examples
"""
Sample Python/Pygame Programs
Simpson College Computer Science
http://programarcadegames.com/
http://simpson.edu/computer-science/
"""
import random
# Ordenación
def ordenamiento_porseleccion(list):
# Iteramos por todo el array
for pos_actual in range( len(list)):
# Encontramos la posición con el número más pequeño
# Empezamos con la posición actual
min_pos = pos_actual
# Escaneamos de izquierda a derecha (final de la lista)
for escan_pos in range(pos_actual+1, len(list)):
# ¿Esta es la posición más pequeña?
if list[escan_pos] < list[min_pos]:
# Si lo es, la marcamos como tal.
min_pos = escan_pos
# Intercambiamos los dos valores
temp = list[min_pos]
list[min_pos] = list[pos_actual]
list[pos_actual] = temp
def ordenamiento_porinsercion(list):
"""Ordenamos una lista usando el algoritmo por inserción"""
# Empezamos por el segundo elemento (pos 1).
# Usamos este elemento para introducirlo en la lista.
for pos_clave in range(1, len(list)):
# Obtenemos el valor del elemento a introducir
valor_clave = list[pos_clave]
# Escaneamos de derecha a izquierda (principio de la lista)
escan_pos = pos_clave - 1
# Iteramos sobre cada elemento, desplazándolo hacia arriba hasta
# que alcanzamos la posición
while (escan_pos >= 0) and (list[escan_pos] > valor_clave):
list[escan_pos + 1] = list[escan_pos]
escan_pos = escan_pos - 1
# Ahora que todo ha sido apartado a un lado, introducimos el valor
# clave en la ubicación correcta
list[escan_pos + 1] = valor_clave
# Imprimimos una lista
def print_lista(list):
for item in list:
print("%3d" % item,end="")
print()
# Creamos dos listas con los mismos números aleatorios
lista1 = []
lista2 = []
longitud_lista = 10
for i in range(longitud_lista):
nuevo_numero = random.randrange(100)
lista1.append(nuevo_numero)
lista2.append(nuevo_numero)
# Imprimimos la lista original
print_lista(lista1)
# Usamos ordenar por selección e imprimimos el resultado
print("Ordenar por Selección")
ordenamiento_porseleccion(lista1)
print_lista(lista1)
# Usamos ordenar por inserción e imprimimos el resultado.
print("Ordenar por Inserción")
ordenamiento_porinsercion(lista2)
print_lista(lista2)