efficiency updates:
uses pairs instead of lists
uses preexisting list of nodes instead of randomly picking nodes.
finds random crossover point between middle 50%

<tested>