I'm attempting to merge a list of lists into one master sorted list. (It's a list of lists of strings in C#, but the type isn't really relevant here)
There's a similar problem here How to merge a list of lists with same type of items to a single list of items? but my requirements are different.
Every comparison I make is going to be based on user input, so I can't do any sort of all-at-once LINQ thing like the other question. I have to ask the user which item is 'better' for every single comparison.
My initial idea was to effectively copy the 'merge' part of 'mergesort', and repeatedly use binary search for each new term popped off the second list in each merge.
However, I still don't know what would be the most efficient order to merge the lists. Should I merge smallest with smallest, and build up size progressively that way? Or would it be better to have a designated big list that the small lists get merged into once? I'm not sure how to go about proving this either way.
How would I merge these lists of arbitrary size whilst performing the minimum number of user-facing comparisons?