我有一個存儲整數丟失的列表。 我不喜歡默認的List.Sort()工作,因爲我希望列表按實際的int大小排序。 到目前爲止,我有這個:優化列表<T>。排序(比較器)
哦,並且整數存儲在字符串中,例如「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 – 2009-04-21 09:39:26