Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
La insercin se ejecuta una vez en su mejor de los casos y se ejecuta en sus peores
casos y promedio.
def insertion_sort(array):
for slot in range(1, len(array)):
value = array[slot]
test_slot = slot - 1
while test_slot > -1 and array[test_slot] > value:
array[test_slot + 1] = array[test_slot]
test_slot = test_slot - 1
array[test_slot + 1] = value
return array
Prubese con un arreglo de 100 enteros generados aleatoriamente con 100 enteros entre -20
y 40. Use la lnea de comando y el intrprete interactivo para verificar que si ordena
ejecutndolo varias veces.
import unittest
import random
def insertion_sort(seq):
"""Acepta una secuencia, utiliza algoritmo de ordenacin por
insercin para ordenar. Devuelve una lista ordenada"""
partition = 1
while partition < len(seq):
temp = partition
#mientras que el temp no est en posicin correcta en la
sublista, decrementa la posicion
while temp != 0 and seq[temp] < seq[temp-1]:
seq[temp], seq[temp-1] = seq[temp-1], seq[temp]
temp -= 1
partition += 1
return seq
class test_insertionsort(unittest.TestCase):
def test_insertionsort(self):
"""Test insertion_sort()"""
seq = [random.randrange(-20, 40) for _ in range(100)]
self.assertEqual(insertion_sort(seq), sorted(seq))
print(test_insertionsort())
print (seq)
if __name__ == '__main__':
unittest.main()
0rden Ascendente
0,0002500000000000
0,0002000000000000
0,0001500000000000
0,0001000000000000
0,0000500000000000
0,0000000000000000
0
200
400
600
800
1000
Orden Descendente
0,0000300000000000000
0,0000250000000000000
0,0000200000000000000
0,0000150000000000000
0,0000100000000000000
0,0000050000000000000
0,0000000000000000000
0
200
400
600
800
1000
1200
1200
Orden Aleatorio
0,1200000000000000
0,1000000000000000
0,0800000000000000
0,0600000000000000
0,0400000000000000
0,0200000000000000
0,0000000000000000
0
200
400
600
800
1000
1200