# Perl, 62 bytes

Includes +3 for `-p`

Give input as a single line of numbers on STDIN:

    perl -M5.010 visisort.pl <<< "3 0 4 2 1"

Repeatedly swaps the first inversion. Swap complexity is `O(n^2)`, time complexity is `O(n^3)`. Uses the numbers being swapped as mark:

    3 0 4 2 1
    3 0
    0 3 4 2 1
        4 2
    0 3 2 4 1
      3 2
    0 2 3 4 1
          4 1
    0 2 3 1 4
        3 1
    0 2 1 3 4
      2 1
    0 1 2 3 4

`visisort.pl`:

    #!/usr/bin/perl -p
    $&>$'&&say$_.$"x"@-".!s/(\S+) \G(\S+)/$2 $1/.$&while/\S+ /g

The program also supports negative values and floating point numbers

If you insist on a connecting character the code becomes 65 bytes:

    #!/usr/bin/perl -p
    $&>$'&&say$_.$"x"@-".!s/(\S+) \G(\S+)/$2 $1/.$1.-$2while/\S+ /g

But now it doesn't support negative numbers and 0 anymore (but the program only has to support positive integers anyways. The `0` in the example is a mistake)