Написать метод, реализующий упорядочивание массива произвольного типа - C# (179199)

Узнай цену своей работы

Формулировка задачи:

Есть такая задача:
Написать метод, реализующий упорядочивание массива произвольного типа. Принцип сравнения двух элементов должен передаваться в метод через делегат. Стандартные инструменты типа Array.Sort и IComparable не использовать.
Я ее написал, но работает только, если метод принимает массив того типа, который мы явно укажем. Значит, у меня есть: --3 метода сравнения массива; --Сам делегат; --И метод ArrayProcessor, который принимает T[] array и этот делегат. Получается, что я создаю три экземпляра делегата, которые ссылаются на разные методы сортировки и уже в ArrayProcessor передам массив и один из этих делегатов. Проблема только в том, как реализовать работу с массивами произвольного типа? Я не могу передать в метод массив типа T[] без использования IComparable, т.к. внутри метода будет сообщение "Operator '<' cannot be applied to operands of type 'T' and 'T' ". По этому вопросу я уже создавал тему, вот: Обобщенный метод сортировки массива Есть у кого идеи, как реализовать? Может у меня сам подход к решению неверный?

Решение задачи: «Написать метод, реализующий упорядочивание массива произвольного типа»

textual
Листинг программы
// В .NET имеется готовый делегат с таким же именем, но раз уж надо все свое...
public delegate int Comparison<T>(T first, T second);
 
public void BubbleSort<T>(T[] a, Comparison<T> compare) 
        {
            for (int i = 0; i < a.Length; i++)
            {
                for (int j = i + 1; j < a.Length; j++)
                {
                    if (compare(a[j], a[i]) < 0)
                    {
                        var temp = a[i]; 
                        a[i] = a[j];
                        a[j] = temp;
                    }
                }
            }
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.222 из 5
Похожие ответы