def shellSort(lst, lessfunction, column): n = lt.size(lst) h = 1 while h < n / 3: # Se calcula el tamaño del primer gap. La lista se h-ordena con este tamaño h = 3 * h + 1 # por ejemplo para n = 100, h toma un valor inical de 13 , 4, 1 while (h >= 1): for i in range(h, n): j = i while (j >= h) and lessfunction(lt.getElement( lst, j + 1), lt.getElement(lst, j - h + 1), column): lt.exchange(lst, j + 1, j - h + 1) j -= h h //= 3 # h se decrementa en un tercio. cuando h es igual a 1, se comporta como insertionsort
def exchange(lst, pos1, pos2): """ Intercambia la informacion en las posiciones pos1 y pos2 de la lista. Args: lst: La lista a examinar pos1: Posición del primer elemento pos2: Posiocion del segundo elemento Raises: Exception """ try: lt.exchange(lst, pos1, pos2) except Exception as exp: error.reraise(exp, 'List->exchange: ')
def exchange(lst, pos1, pos2): """ Intercambia la informacion en las posiciones pos1 y pos2 de la lista """ lt.exchange(lst, pos1, pos2)