ВУЗ:
Составители:
Рубрика:
130
public static void Sort<T>(CompareDelegate <T> comparer,
T[] items, int left, int right)
{
int i = left;
int j = right;
T center = items[(left + right) / 2];
while (i <= j)
{
// вызов операции сравнения через делегат
while (comparer(center, items[i]))
i++;
while (comparer(items[j], center))
j--;
if (i <= j)
{
T x = items[i];
items[i] = items[j];
items[j] = x;
i++;
j--;
}
}
if (left < j)
Sort(comparer, items, left, j);
if (right > i)
Sort(comparer, items, i, right);
}
Приведем примеры использования данной версии функции сортировки
по возрастанию и по убывания массива целых чисел.
int[] a = {1, 2, 10, 4, -5, 0,-15,100,45,13,-250};
Console.WriteLine("Исходный массив");
foreach (int i in a)
Console.Write(i.ToString() + " ");
Console.WriteLine();
// создание объекта, предназначенного
// для сравнения целых чисел
MyComparer<int> c = new MyComparer<int>();
// создание делегата, указывающего на функцию
// сравнения целых чисел
// Greater объекта c
CompareDelegate <int> g = new
CompareDelegate<int>(c.Greater);
// вызов функции сортировки массива по возрастанию
// с использованием делегата g
public static void Sort(CompareDelegate comparer, T[] items, int left, int right) { int i = left; int j = right; T center = items[(left + right) / 2]; while (i <= j) { // вызов операции сравнения через делегат while (comparer(center, items[i])) i++; while (comparer(items[j], center)) j--; if (i <= j) { T x = items[i]; items[i] = items[j]; items[j] = x; i++; j--; } } if (left < j) Sort(comparer, items, left, j); if (right > i) Sort(comparer, items, i, right); } Приведем примеры использования данной версии функции сортировки по возрастанию и по убывания массива целых чисел. int[] a = {1, 2, 10, 4, -5, 0,-15,100,45,13,-250}; Console.WriteLine("Исходный массив"); foreach (int i in a) Console.Write(i.ToString() + " "); Console.WriteLine(); // создание объекта, предназначенного // для сравнения целых чисел MyComparer c = new MyComparer (); // создание делегата, указывающего на функцию // сравнения целых чисел // Greater объекта c CompareDelegate g = new CompareDelegate (c.Greater); // вызов функции сортировки массива по возрастанию // с использованием делегата g 130
Страницы
- « первая
- ‹ предыдущая
- …
- 128
- 129
- 130
- 131
- 132
- …
- следующая ›
- последняя »