私は整数の損失を格納するリストを持っています。 リストを実際のintのサイズで並べ替えるため、デフォルトのList.Sort()がうまくいきません。 これまでのところ、私はこれを持っています:リストを最適化する<T>。ソート(Comparer)
ああ、intは文字列、例えば "1234"に格納されています。それは私が変えることのできないものです。
public class IntComparer : IComparer<string>
{
public int Compare(string x, string y)
{
if (x == null)
{
if (y == null)
{
// If x is null and y is null, they're
// equal.
return 0;
}
else
{
// If x is null and y is not null, y
// is greater.
return -1;
}
}
else
{
// If x is not null...
//
if (y == null)
// ...and y is null, x is greater.
{
return 1;
}
else
{
// ...and y is not null, compare the
// lengths of the two strings.
//
int xInt = Convert.ToInt32(x);
int yInt = Convert.ToInt32(y);
if (x > y)
{
// If the strings are not of equal length,
// the longer string is greater.
//
return 1;
}
else if (xInt == yInt)
{
return 0;
}
else
{
// If the strings are of equal length,
// sort them with ordinary string comparison.
//
return -1;
}
}
}
}
私の知る限り、これはバブルソートです。 代わりに何を実装する必要がありますか?クイックソート?また、私はそれを書くのを助ける必要があるかもしれません。
ああ、私のリストは、文字列も
に数字を格納2000個の要素の短い含まれている、私はこのように私のIComparerを呼び出します。
IntComparer intSort = New IntComparer();
List<T>.Sort(intSort);
D'oh - ほとんど同じですが、あなた3分ほど私を打つ。 +1 ;-p –
まあ、初めてのことです:) –
これは、自分のIComparerをList.Sort()に追加するよりも速い/遅い/同じ場合には何か手掛かりはありますか? Linqがこのような状況でどのくらいの速さを持つことができるか分かりません:) – CasperT