J'ai un problème en essayant de trier un Dictionary<int,Elem>
/SortedList<int,Elem>
des éléments.C# élément tri
J'ai une liste des éléments N
qui doivent apparaître X
fois sur la liste, mais si un élément est sur l'indice i
alors il ne peut pas réapparaître sur i - 1
ou i + 1
. Je dois aussi respecter les limites de la liste (l'élément N est antérieur à l'élément 1 et l'élément 1 à l'élément N).
J'ai deux points de départ possibles:
Une liste d'éléments qui ont une propriété
Times
, qui a le nombre de fois où l'élément doit apparaître sur la liste des résultats.Exemple d'entrée:
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
Une liste contenant tous les éléments que je veux trier, de toute évidence, de façon unssorted.
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")};
Sortie prévue:
star circle star sqare circle sqare star circle
// or any other combination in which any element is not preceded by itself
algorithmes de tri Meilleure performance sont les bienvenus, mais pas un must ici, car cela se fait rarement. J'utilise C# 4.0 et. Net Framework 4.0.
Je ne comprends pas du tout cette question. Peut-être que quelques exemples illustrent ce que vous essayez de faire. Pouvez-vous donner des exemples d'intrants et de résultats attendus pour ces intrants? –
Que se passe-t-il dans le cas où il n'y a pas une telle commande? Par exemple, 'star star star circle' n'a pas cet ordre. – jason
Dans ce cas l'exception devrait être levée par exemple: NoSortingPosibleException ou quelque chose comme ça, mais c'est facile à contrôler en ayant max (elem.times) * 3