Studiati questo codice, che usa lastSwappedLine sia come limite di riga da esaminare nel ciclo successivo, sia come condizione di uscita (se l'ultima riga scambiata è la riga zero vuol dire che non c'è più niente da scambiare).
codice:
void BubbleSort(int Array[], size_t Length)
{
    size_t lastSwappedLine;
    size_t limit=Length-1;
    do
    {
        swappedLine=0;
        for(size_t i=0;i<limit-1;i++)
        {
            if(Array[i]>Array[i+1])
            {
                lastSwappedLine=i;
                Swap(Array+i, Array+i+1);
            }
        }
        limit=lastSwappedLine;
    } while(lastSwappedLine);
}