This is one of the few instances where NOT quoting a variable is useful.
$ string="1.3.2 1.3.1 1.2.3 1.1.1.5"
$ printf "%s\n" $string | sort -V
1.1.1.5
1.2.3
1.3.1
1.3.2
This uses GNU sort's -V aka --version-sort option to sort the numbers.
You can store that back into a variable, even the same variable ($string):
$ string=$(printf "%s\n" $string | sort -V)
$ echo $string
1.1.1.5 1.2.3 1.3.1 1.3.2
or an array:
$ array=( $(printf "%s\n" $string | sort -V) )
$ typeset -p array
declare -a array=([0]="1.1.1.5" [1]="1.2.3" [2]="1.3.1" [3]="1.3.2")
BTW, you should almost certainly be using an array rather than a simple string with white-space separating multiple different values. The only real reason not to is if you're using a shell (like ash) that doesn't support arrays.
e.g.
$ array=( 1.3.2 1.3.1 1.2.3 1.1.1.5 )
$ typeset -p array
declare -a array=([0]="1.3.2" [1]="1.3.1" [2]="1.2.3" [3]="1.1.1.5")
$ array=( $(printf "%s\n" "${array[@]}" | sort -V) )
$ typeset -p array
declare -a array=([0]="1.1.1.5" [1]="1.2.3" [2]="1.3.1" [3]="1.3.2")