Я думаю, что одна из проблем в вашем коде заключается в том, что вы сохраняете значение pivot при разбиении списка.Это означает, что вы столкнетесь с ситуацией, когда все значения разделятся на большее или меньшее, и разбиение перестанет работать.Это фактически не позволит вам разделить один из списков больше, поэтому условие выхода в методе Partition никогда не выполняется.
Вы должны выбрать значение сводки, удалить элемент сводки из списка (эта часть отсутствует в вашем коде), разделить его на большие и меньшие списки, отсортировать их (рекурсивно),а затем объединить меньший список, элемент pivot (который также, естественно, отсутствует в вашем коде) и больший список.
Я могу опубликовать обновленный, работающий пример кода, но поскольку вы находитесь в "режим обучения ", я буду держать его при себе, пока вы не попросите об этом :)