Дан следующий фрагмент на Python: def quicksort(a): if len(a) <= 1: return a; pivot = a[len(a)//2]; left = [x for x in a if x pivot]; return quicksort(left) + middle + quicksort(right) — объясните поведение этого алгоритма на входах с большим числом повторяющихся элементов и на уже отсортированных данных, какие проблемы с производительностью и потреблением памяти могут возникнуть и как улучшить реализацию для реальных задач