As Jeff pointed out, it will be easier to create your array sorted, as in:
set -A files $(ls -trtrd -- ~/a ~/b ~/c)
Here splitting the output of ls on $IFS character (by default containing SPC, TAB, LF and NUL). To split on LF only (to be able to work with filenames than contain SPC or TAB characters (but not LF obviously)), you can set IFS=$'\n' or use the f parameter expansion flag:
files=(${(f)"$(ls -trd -- $files)"})
(here also using zsh-style array=(...) syntax instead of ksh88-style set -A array ... since that syntax is already zsh-specific anyway).