If you want the best solution, 100 values is not a small list for, at first approximation you need about (n/2)! tries to check all the possible partitions.
You could use a couple of tricks to reduce the range of solutions:
- Say N the sum of all the elements, divided by two, and floored; say S(X) the sum of the elements of a given subset X of your list. Your problem can be reduced to find the subset P with the minimum ABS(S(P)-N) within all the possible subsets. The second set Q is obviously given by the difference between the original list and P.
- Say M the greatest element of the list. You can safely assume that it is part of the solution (all elements are) so you can take it off from the list, decrease N by M and apply the previous point to the shortened list and the reduced N. If your list has a great dispersion, this can lead to a significant reduction of the number of tests required.
Rule One: "Do not act incautiously when confronting a little bald wrinkly smiling man."