There's more than one way to do things  
PerlMonks 
Re^2: Patience Sorting To Find Longest Increasing Subsequenceby Limbic~Region (Chancellor) 
on May 05, 2006 at 15:51 UTC ( #547689=note: print w/ replies, xml )  Need Help?? 
bart,
If you take advantage of the fact that the top cards are already in ascending order, you can select the top card of the left most pile and then move that pile to keep the new top card in ascending order. To find the new location using a binary search you have O(Log N). To insert in the middle is O(N). Since you have to do this for N items, you result in O(N^2 Log N). A merge sort is only O(N^2) worst case so no, I don't think so. As I said in the other reply, using a different datastructure could make the finishing of the sort more efficient but it also adds a great deal more complexity. You are welcome to use a Van_Emde_Boas_tree which claims to be able to do the whole thing in O(N Log N) but that is an exercise left for the reader. Cheers  L~R
In Section
Meditations

