ある配列で、A,B,C,D,EがA,B,E,C,Dとかに変わったとき
今、なにがどこの位置に入ったかを知りたいんですが
どうにかして、知る方法ってありますか?

foreachで頭からまわしても、違う場所は取れるけど
A,B,C,D,E → A,B,D,E,CとCを一番下に持ってきたときに
Cが一番下に行ったと判断ができません。

ドラッグ&ドロップで要素をもってきてこの間に入れるみたいなイメージしていただくと
わかりやすいですでしょうか?
A,B,C,D,E → E,A,B,C,D(Eを一番上にもってきた、Aの上にもってきた)
A,B,C,D,E → A,C,D,B,E(BをDとEの間に入れた)

よろしくお願いします。