Typesetting permutations and alignment

enter image description here

\documentclass{article}
\usepackage{amsmath}
\begin{document}

\[\setlength{\arraycolsep}{4pt}
  \begin{matrix}
    \llap{(}1 & 2 & 3 & 4 & 5\rlap{)}&\llap{(}6 & 7 & 8 & 9 & 10\rlap{)} \\
    1 & 2 & \llap{(}3 & 4 & 5&6 & 7\rlap{)} & 8 & 9 & 10\\
    1 & 2 & 3 & \llap{(}4 & 5&6 & 7 & 8\rlap{)} & 9 & 10
  \end{matrix}
\]
\end{document}

To take David's excellent answer a step further...if the matrix is large, it can get tiring to type in all the \llaps and \rlaps. Thus, one can make ( and ) active and take care of the laps automatically. After the initial setup, input is simplified.

\documentclass{article}
\usepackage{amsmath}
\let\svlp(
\let\svrp)
\begin{document}

\[\setlength{\arraycolsep}{4pt}
\catcode`(=\active
\def({\llap{\svlp}}
\catcode`)=\active
\def){\rlap{\svrp}}
  \begin{matrix}(1 & 2 & 3 & 4 & 5)&(6 & 7 & 8 & 9 & 10) \\
    1 & 2 & (3 & 4 & 5&6 & 7) & 8 & 9 & 10\\
    1 & 2 & 3 & (4 & 5&6 & 7 & 8) & 9 & 10
  \end{matrix}
\]
\end{document}

enter image description here


A solution with blkarray:

\documentclass{article}
\usepackage{mathtools}
\usepackage{blkarray}%

\begin{document}

\[
  \makeatletter
  \BA@colsep=3pt
  \makeatother
  \begin{blockarray}{*{10}{c}}
    \begin{block}{(*{5}{c})(*{5}{c})}
      1 & 2 & 3 & 4 & 5 & 6 & 7 & 8 & 9 & 10\\
    \end{block}
    \begin{block}{cc(*{5}{c})ccc}
      1 & 2 & 3 & 4 & 5&6 & 7 & 8 & 9 & 10\\
    \end{block}
    \begin{block}{ccc(*{5}{c})cc}
      1 & 2 & 3 & 4 & 5 &6 & 7 & 8 & 9 & 10_\\
    \end{block}
  \end{blockarray}
\]

\end{document} 

enter image description here