Modern power grid is becoming increasingly decentralized due to the rapid penetration of distributed energy sources. The concept of Energy Internet has been proposed as an open framework for interconnecting all distributed electrical devices via energy routers. However, efficient power transmission across the complex Energy Internet depends critically on the implementation of efficient energy routing algorithm. In this paper, an optimal energy routing algorithm is proposed to minimize transmission loss and achieve efficient energy routing. A semi-decentralized algorithm is proposed to distribute the computational load to individual energy routers for relieving the computational burden of the network control center. Routing information is shared among all energy routers via a common information sharing platform. With the proposed energy routing algorithm, transmission loss is further reduced and line congestion problem can be avoided by adopting multi-path transmissions. In the presence of multiple source-sink pairs and path overlapping, congestion and conflicts are resolved by cooperative routing. Transmission paths of the coalition formed are re-planned with the objective to minimize the total transmission loss of the coalition, and transmission loss savings are fairly assigned according to the Shapley values of members. Finally, the proposed energy routing algorithm is rigorously verified by numerical simulations.