Вы должны просто использовать percentile_cont()
или percentile_disc()
оконные функции:
select percentile_cont(0.5) within group (order by n) over (),
percentile_disc(0.5) within group (order by n) over ()
from t;
Нет необходимости заново изобретать колесо. [ 116]
Ваш массив будет жить в куче, размер стека не имеет значения в вашем случае.
Размер стека по умолчанию для приложения .NET составляет 1 МБ (по умолчанию 256 КБ для 32-разрядных приложений ASP.NET и 512 КБ для 64-разрядных приложений ASP.NET), но вы может это изменить. Для приложения вы можете изменить размер по умолчанию, изменив PE-заголовок исполняемого файла. Для создаваемых потоков можно использовать перегрузку конструктора, которая принимает размер стека.
Но, как указывает Антон Тижхий в своем ответе, массивы являются ссылочными типами и, следовательно, находятся в куче (даже если массив может содержать кучу типов значений).
Размер стека можно настроить, и можно установить несколькими способами .
Чтобы использовать стек для хранения массива, вы должны использовать небезопасный код с указателями и stackalloc для выделения желаемого пространства памяти в стеке.