Come funziona Array # sort quando viene passato un blocco?

Sto avendo problemi a capire come array.sort{ |x,y| block } array.sort{ |x,y| block } funziona esattamente, quindi come usarlo?

Un esempio della documentazione di Ruby :

  a = [ "d", "a", "e", "c", "b" ] a.sort #=> ["a", "b", "c", "d", "e"] a.sort { |x,y| y  x } #=> ["e", "d", "c", "b", "a"]