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

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

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

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

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

textual
Листинг программы
  1. // В .NET имеется готовый делегат с таким же именем, но раз уж надо все свое...
  2. public delegate int Comparison<T>(T first, T second);
  3.  
  4. public void BubbleSort<T>(T[] a, Comparison<T> compare)
  5.         {
  6.             for (int i = 0; i < a.Length; i++)
  7.             {
  8.                 for (int j = i + 1; j < a.Length; j++)
  9.                 {
  10.                     if (compare(a[j], a[i]) < 0)
  11.                     {
  12.                         var temp = a[i];
  13.                         a[i] = a[j];
  14.                         a[j] = temp;
  15.                     }
  16.                 }
  17.             }
  18.         }

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


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

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

9   голосов , оценка 4.222 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы