temp ist das element, dass du zum aktuellen zeitpunkt verschieben willst. am anfang ist es das element an der position in der du das neue element speichern willst und bei jedem schleifendurchlauf wird temp einen schritt weiter nach rechts geschoben.
temp2 ist nur ein zwischenspeicher. die 3 zeilen nach dem sonst tauschen nur die werte von temp uind array[j]