我在C#中有两个列表。在c中排序列表#
public List<MyClass> objectList = new List<MyClass>(); // it is filled with MyClass objects
public List<int> numberList = new List<int>(); // it is filled with numbers
在numberList号码的索引对应于对象在链表类索引:例如:链表类[0] = 01和numberList [0] = 3; 链表类[1] = O2和numberList [1] = 5 ......
objectList: |o1 | o2 | o3 | o4 | o5 | ...
numberList: 3 5 6 1 4 ...
我想在升序numberList分类编号,我想在链表类的objetcs与他们移动: 排序后:
objectList: |o4 | o1 | o5 | o2 | o3 | ...
numberList: 1 3 4 5 6 ...
在实际应用中,我需要这个在N皇后问题上实现爬山算法。在objectList中,我存储棋盘上所有皇后的位置,并在numberList中存储位置的计算启发式。然后,我想对numberList进行排序,以便获得启发式值最低的位置。目标是转移到启发式值最低的位置。
更好地使用包装对象将它们组合到同一个列表中:/ – Will
如果您的值已连接,为什么要将它们保存在单独的列表中?无论如何,你的问题是什么?什么不起作用? – David
有一个[Array.Sort重载](https://msdn.microsoft.com/en-us/library/85y6y2d3(v = vs.110).aspx)将为您执行此操作。所以你可以从列表中创建临时数组,然后进行排序,然后将数组内容复制回来。据我所知,'List' API或LINQ中没有相应的功能。 –