Это невозможно.Вам нужно n ^ 2 памяти для отдельных элементов.
Если вы не учитываете это очевидное потребление памяти, я рекомендую один из алгоритмов сортировки на месте, например, heapsort.Это займет O (1) дополнительного пространства.
Если вы ищете алгоритм внешней сортировки, в котором внешнее хранилище не учитывается, а только внутреннее, я рекомендую использовать восходящую сортировку слиянием.Вы можете заставить это потреблять столько или меньше внутренней памяти, сколько вы хотите;чтобы использовать приблизительно 2n памяти, всегда считывайте n / 2 элемента из каждого частично отсортированного набора и объединяйте их в другой массив из n элементов;затем запишите результат обратно на диск (желательно в отдельный файл).