add sort-based shuffle