After a long time struggling, I think I found a better way to sort the eigen values to the original order. First, I've tried eigenshuffle function, it does not work well, at least for my case. BTW, I am solving a eigen value problem of a Hamiltonian. Matlab's ordering can not provide correct band structure.
Here's my method: eigen value perturbation method. For a matrix A having lambda1,...lambdaN as eigen values, A+E must have the eigen values of lambda1+eps1,..., lambdaN+epsN, where perturbation matrix E = diag([eps1,...,epsN]). If we control the value of eps_i to be different, we actually can add a different marker to the original eigen value, this marker can be simply ascending values or just random. Later we can sort the eigen values of by the perturbation eps_i. I'm not going to post code here, if you guys have questions, you can ask here. Thanks!