У меня есть список, в котором хранится потеря целых чисел.
Мне не нравится, как работает List.Sort () по умолчанию, так как я хочу, чтобы список упорядочивался по размеру фактического 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;
}
}
}
}
Но, насколько мне известно, это пузырьковая сортировка, верно?
Что я должен реализовать вместо этого? Quicksort? Кроме того, мне может понадобиться помощь в написании этого.
Да, и мой список содержит не более 2 тысяч элементов, которые хранят числа в строках
Также я называю своего IComparer следующим образом:
IntComparer intSort = New IntComparer();
List<T>.Sort(intSort);