Ваш текущий подход неоптимальный , так как каждый раз, когда вы добавляете элемент, вы снова сортируете весь список, чего можно избежать, и вы создаете новый список каждый раз, когда добавляете целое число к List<int>
, чего снова можно избежать.
Поскольку у вас уже есть List<int>
, я бы использовал методы, принадлежащие этому классу, в отличие от использования LINQ, чтобы избежать накладных расходов.
ЧтоЯ предлагаю создать метод расширения следующим образом:
public static class Extensions {
public static void InsertElementDescending(this List<int> source,
int element)
{
int index = source.FindLastIndex(e => e > element);
if (index == 0 || index == -1)
{
source.Insert(0, element);
return;
}
source.Insert(index + 1, element);
}
}
Тогда сценарий использования будет:
List<int> list = new List<int>();
list.InsertElementDescending(1);
list.InsertElementDescending(2);
list.InsertElementDescending(233);
list.InsertElementDescending(0);
list.InsertElementDescending(-2);
Теперь список будет содержать элементы в порядке убывания.
В целом это имеет лучшую производительность, чем ваш текущий подход.