I am bringing one short question at the first and after that I will presenet the larger problem: answers may be related to use of Ordering or SortBy but I think they are not useful to the second question:


 1- I have a list with these elements:

 list={1/2 (1 + Sqrt[5]), 1, 1, 1/2 (1 - Sqrt[5]), 0};
[![enter image description here][1]][1]

I want to sort them with

 Sort[list];
I see the bellow result:

[![enter image description here][2]][2]

Which is incorrect, because `N[1/2 (1 - Sqrt[5])]= -0.6`, However I can write `Sort[N[list]]` but I need to have the exact numbers, not their approximate values (I mean that I need `1/2 (1 - Sqrt[5])` instead of `-0.6`).


 2-If we have a matrix same as here:

 matrix = {{1, 0, 1, 0, 0}, {0, 1, 1, 1, 0}, {1, 0, 0, 0, 
 0}, {1, 0, 0, 1, 1}, {1, 0, 1, 0, 0}};

with this code:

 {evals, evecs} = Eigensystem[matrix];
 sortedvalues = SortBy[Transpose[{evals, evecs}], First];

(I can't add Less in order to sort evals and corresponded evecs) 
Also, or by 

 {\[CurlyEpsilon], \[Psi]} = Eigensystem[matrix];
 {\[CurlyEpsilon], \[Psi]} = {\[CurlyEpsilon][[#]],\[Psi][[#]]} &@Ordering[\[CurlyEpsilon]]

`Ordering` is not able to sort and recognize the magnitude of `1/2 (1 - Sqrt[5])`!!!!

 [1]: https://i.sstatic.net/ZWoFv.png
 [2]: https://i.sstatic.net/8WMYN.png