私が持っていると言う
List<int> ages = new List<int>() { 8, 5, 3, 9, 2, 1, 7 };
List<int> marks = new List<int>() { 12, 17, 08, 15, 19, 02, 11 };
marks
次のように並べ替えることができますages
。
while (true)
{
bool swapped = false;
for (int i = 0; i < ages.Count - 1; i++)
if (ages[i] > ages[i + 1])
{
int tmp = ages[i];
ages[i] = ages[i + 1];
ages[i + 1] = tmp;
tmp = marks[i];
marks[i] = marks[i + 1];
marks[i + 1] = tmp;
swapped = true;
}
if (!swapped)
break;
}
これを任意の 2 つのリストを受け入れる関数に入れたいと思います。最初のパラメーターは、参照リスト、数値または比較可能なリストになります。2 番目のパラメーターは、データを含むリストになります。
例えば:
public static void Sort<T>(List<T> RefList, List<T> DataList)
{
// sorting logic here...
}
いくつかの問題があります:
まず第一に、T
はほぼ確実に と で同じ型ではRefList
ありませんDataList
。RefList は、日付、整数、または double の可能性があります。一方、DataList は自由に何でも構いません。任意のジェネリック型を 2 つ受け取ることができる必要があります。
第二に、次の行で>
演算子を使用できないようです。T
if (ages[i] > ages[i + 1])
おそらく私のアプローチ全体が間違っています。
ところで、2 つのリストを複合データ型の 1 つのリストに結合する必要があることを示唆する同様の質問への回答を読んだことがあります。これは、私のアプリケーションではまったく実用的ではありません。私がやりたいことは、あるリストを別のリストの要素に基づいてソートする静的関数を作成することだけです。