На самом деле, если список сильно меняется, возможно, вам следует сохранить его в порядке с SortedList.
Если сортировка происходит только один раз. И затем, реальная действительность: если вы сортируете в памяти, любой O (n * Ln (n)) будет достаточно. Вы не заметите никакой разницы между List, Array или чем-либо еще.