Esempio n. 1
0
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
Esempio n. 2
0
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
Esempio n. 3
0
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
Esempio n. 4
0
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
Esempio n. 5
0
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