that is correct.
It sounds like you don't really need to fully sort the array afterall since presumably it will still succeed without being sorted, it will just take longer, am I correct?
That sounds like a very interesting scheme. However, as the list of moves is usually small (~30), I am not sure if it's worth the complexity.
If so, you could instead periodically perform quick-sort-like passes similiar to how you the find k-smallest algorithm, that uses partitioning and only recurse on the lower half each time (assuming a near-even split). That would bring the lowest (best) value items to the front, and those almost as low (good) ones to close-ish to the front.