"Ingegnerizzare inversamente questo algoritmo."
Input: Un array A di N interi A[1], A[2], ..., A[N]
Output: Un nuovo array ordinato B di N interi B[1], B[2], ..., B[N]

Per i = 2 a N
    j = i
    mentre j > 1 e A[j] < A[j-1]
        scambia A[j] e A[j-1]
        j = j-1
L'algoritmo prende un array di N interi, A[1], A[2]..., A[N] e esegue una bubble sort per creare un nuovo array ordinato B[1], B[2]..., B[N]. A partire dall'indice 2, confronta ogni elemento A[j] con il suo predecessore immediato A[j-1]. Se A[j] è più piccolo di A[j-1], i due elementi vengono scambiati e j viene decrementato di uno. Questo processo viene ripetuto fino a quando A[j] non è più piccolo di A[j-1] o j = 1.