def insercion(arreglo): for i in range(1, len(arreglo)): j = i - 1 while j >= 0 and arreglo[j] > arreglo[j+1]: swap(j, j+1, arreglo) j = j - 1 #return arreglo
def SelectionSort(lyst): """ Ordina gli elementi in senso crescente; Prestazione nell'ordine di NQuadro""" i = 0 while i < len(lyst) - 1: #Esegue n-1 ricerche minIndex = i #Indice del minimo j = i + 1 while j < len(lyst): #Inizio della ricerca del valore minimo if lyst[j] < lyst[minIndex]: minIndex = j j += 1 if minIndex != i: swap(lyst, minIndex, i) i += 1
def bubble(A): n = len(A) swapped = True while swapped: swapped = False for i in range(n - 1): if A[i] > A[i + 1]: swap(i, i + 1, A) swapped = True n = n - 1 if not swapped: break
def BubbleSort(lyst): """ Ordina in senso crescente gli elementi; Prestazione nell'ordine di NQuadro """ n = len(lyst) while n > 1: swapped = False #Booleano per tenere traccia degli scambi, miglioria nel caso ottimo i = 1 while i < n: if lyst[i] < lyst[i - 1]: swap(lyst,i, i-1) swapped = True #Cambia di valore il booleano quindi significa che vi è stato uno scambio i += 1 if not swapped: return #Esce perchè non vi sono stati o non vi sono più scambi n -= 1
def partition(lyst, left, right): """ Trova il pivot, e sposta alla sua sinistra gli elementi minori e alla sua destra gli elementi maggiori dello stesso pivot; Restituisce la posizione del pivot. """ middle = (left + right) // 2 pivot = lyst[middle] lyst[middle] = lyst[right] lyst[right] = pivot #Pone il confine prima della prima posizione boundary = left #Sposta a sinistra gli elementi minori del pivot for index in range(left, right): if lyst[index] < pivot: swap(lyst, index, boundary) boundary += 1 #Scambia il pivot con l'elemento a destra del confine swap(lyst, right, boundary) return boundary