C#には2つのリストがあります。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の数字のインデックスはobjectListに索引をオブジェクトに対応し:例えば:objectList [0] = O1とnumberList [0] = 3。 objectList [1] = O2とnumberListは、[1]私は昇順でnumberListで数字をソートしたいとobjectListでobjetcsは彼らと一緒に移動するために私がしたい5 ...
objectList: |o1 | o2 | o3 | o4 | o5 | ...
numberList: 3 5 6 1 4 ...
を=: ソート後:
objectList: |o4 | o1 | o5 | o2 | o3 | ...
numberList: 1 3 4 5 6 ...
実際には、Nクイーンの問題でヒルクライミングアルゴリズムを実装するために必要です。 objectListにはボード上のすべてのクイーンズの位置が格納され、numberListにはその位置の計算されたヒューリスティックが格納されます。次に、numberListをソートして、最低のヒューリスティックな値でポジションを取得します。目標は、ヒューリスティックな値が最も低い位置に移動することです。
ラッピングオブジェクトを使用して同じリストに結合する方が良い:/ – Will
値が接続されている場合は、別々のリストに保管しているのはなぜですか?いずれにせよ、あなたの質問は何ですか?何が効いていないのですか? – David
これを行う[Array.Sort overload](https://msdn.microsoft.com/en-us/library/85y6y2d3(v = vs.110).aspx)があります。したがって、リストから一時的な配列を作成し、並べ替えを行い、配列の内容をコピーすることができます。私の知る限り、 'List' APIまたはLINQに対応する機能はありません。 –