У меня проблема с попыткой отсортировать Dictionary<int,Elem>
/ SortedList<int,Elem>
элементов.
У меня есть список N
элементов, которые должны появляться в списке X
раз, но
если элемент находится в индексе i
, он не может появиться снова в i - 1
или i + 1
. Я также должен соблюдать ограничения списка (элемент N стоит перед элементом 1, а элемент 1 - рядом с элементом N).
У меня есть две возможные отправные точки:
Список элементов со свойством Times
, в котором указано, сколько раз элемент должен появляться в результирующем списке.
Пример ввода:
List<elem> elements = new List<elem>(){new Elem("star", 3), new Elem("square", 2), new Elem("circle", 3)};
//Elem construct take element name, and number of times on result list
Список, содержащий все элементы, которые я хочу отсортировать, очевидно, в несортированном виде.
List<elem> elements = new List<elem>(){new Elem("star"),new Elem("star"),new Elem("star"),new Elem("circle"),("circle"),("circle"),new Elem("sqare"),new Elem("sqare")};
Ожидаемый результат:
star circle star sqare circle sqare star circle
// or any other combination in which any element is not preceded by itself
Более эффективные алгоритмы сортировки производительности приветствуются, но не являются обязательными, поскольку это будет происходить нечасто.
Я использую C # 4.0 и .Net Framework 4.0.