This leads me to conclude that there is some difference/reason why bra-ket is especially handy for denoting quantum algorithms.
There's already an accepted answer and an answer that explains 'ket', 'bra' and the scalar product notation.
I'll try add a bit more to the highlighted entry. What makes it a useful/handy notation?
The first thing that bra-ket notation is really used a lot for is to denote very simply the eigenvectors of a (usually Hermitian) operator associated with an eigenvalue. Suppose we have an eigenvalue equation $A(v)=\lambda v$, this can be denoted as $A\left|\lambda\right\rangle=\lambda \left|\lambda\right\rangle$, and probably some extra label $k$ if there is some degeneracy $A\left|\lambda,k\right\rangle=\lambda \left|\lambda,k\right\rangle$.
You see this employed all over quantum mechanics, momentum eigenstates tend to be labelled as $\left|\vec{k}\right\rangle$ or $\left|\vec{p}\right\rangle$ depending on units, or with multiple particle states $\left|\vec{p}_1,\vec{p}_2,\vec{p}_3\ldots\right\rangle$; occupation number representation for bose and fermi system many body systems $\left|n_1,n_2,\ldots\right\rangle$; a spin half particle taking the eigenstates usually of the $S_z$ operator, written sometimes as $\left|+\right\rangle$ and $\left|-\right\rangle$ or $\left|\uparrow\,\right\rangle$ and $\left|\downarrow\,\right\rangle$, etc as shorthand for $\left|\pm \hbar/2\right\rangle$; spherical harmonics as eigenfunctions of the $L^2$ and $L_z$ functions are conveniently written as $\left|l,m\right\rangle$ with $l=0,1,2,\ldots$ and $m=-l,-l+1,\ldots,l-1,l.$
So convenience of notation is one thing, but there's also a kind of 'lego' feeling to algebraic manipulations with dirac notation, take for instance the $S_x$ spin half operator in dirac notation as
$S_x=\frac{\hbar}{2}(\left|\uparrow\right\rangle\left\langle\downarrow\right|+\left|\downarrow\right\rangle\left\langle\uparrow\right|)$, acting on a state like $\left|\uparrow\right\rangle$ one simply does
$$S_x\left|\uparrow\right\rangle=\frac{\hbar}{2}\left(\left|\uparrow\rangle\langle\downarrow\right|+\left|\downarrow\rangle\langle\uparrow\right|\right)\left|\uparrow\right\rangle=\frac{\hbar}{2}\left|\uparrow\rangle\langle\downarrow\mid\uparrow\right\rangle+\frac{\hbar}{2}\left|\downarrow\rangle\langle\uparrow\mid\uparrow\right\rangle=\frac{\hbar}{2}\left|\downarrow\right\rangle$$
since $\left\langle\uparrow\mid\uparrow\right\rangle=1$ and $\left\langle\downarrow\mid\uparrow\right\rangle=0$.
What makes it handy for quantum algorithms?
Say we have a suitable two level system for a qubit; this forms a two dimensional complex vector space $V$ say whose basis is denoted as $\left|0\right\rangle$ and $\left|1\right\rangle$. When we consider say $n$ qubits of this form, the states of the system live in a bigger space the tensor product space, $V^{\otimes n}$. Dirac notation can be rather handy here, the basis states will be labelled by strings of ones and zeros and one usually denotes a state e.g. $\left|1\right\rangle\otimes\left|0\right\rangle\otimes\left|0\right\rangle\otimes\left|1\right\rangle\equiv\left|1001\right\rangle$, and say we have a bit flip operator $X_i$ which interchanges $1\leftrightarrow 0$ on the $i$'th bit, this can act rather simply on the above strings e.g. $X_3\left|1001\right\rangle=\left|1011\right\rangle$, and taking a sum of operators or acting on a superposition of states works just as simply.
Slight caution: a state written as $\left|a,b\right\rangle$ doesn't always mean $\left|a\right\rangle\otimes\left|b\right\rangle$, for instance when you have two identical fermions with wave functions say $\phi_{k_1}(\vec{r}_1)$ and $\phi_{k_2}(\vec{r}_2)$, with labels indexing some basis set, then one might write the slater determinant state of the fermions $$\frac{1}{\sqrt{2}}\left(\phi_{k_1}(\vec{r}_1)\phi_{k_2}(\vec{r}_2)-\phi_{k_1}(\vec{r}_2)\phi_{k_2}(\vec{r}_1)\right)$$ in a shorthand as $\left|\phi_{k_1},\phi_{k_2}\right\rangle$ or even $\left|k_1,k_2\right\rangle\neq \left|k_1\right\rangle\otimes \left|k_2\right\rangle$.