  We present a planner for large-scale (un)labeled object sorting tasks, which
uses two types of manipulation actions: overhead grasping and planar pushing.
The grasping action offers completeness guarantee under mild assumptions, and
planar pushing is an acceleration strategy that moves multiple objects at once.
Our main contribution is twofold: (1) We propose a bilevel planning algorithm.
Our high-level planner makes efficient, near-optimal choices between pushing
and grasping actions based on a cost model. Our low-level planner computes
one-step greedy pushing or grasping actions. (2) We propose a novel low-level
push planner that can find one-step greedy pushing actions in a semi-discrete
search space. The structure of the search space allows us to efficient We show
that, for sorting up to $200$ objects, our planner can find near-optimal
actions with $10$ seconds of computation on a desktop machine.
