Написать метод, реализующий упорядочивание массива произвольного типа - C# (179200)
Формулировка задачи:
Есть задача:
Написать метод, реализующий упорядочивание массива произвольного типа. Принцип сравнения двух элементов должен передаваться в метод через делегат. Стандартные инструменты типа Array.Sort и IComparable не использовать.
Продемонстрировать работу метода на массиве строк.
Мой код почему-то не работает. Массив не сортируется. помогите решить задачу.
using System; namespace ConsoleApplication1 { class Program { public static void Swap<T>(T first, T second) { var tmp = first; first = second; second = first; } public static void Sort<T>(T[]arr, Func<T, T, int> compare) { if (compare == null) { throw new ArgumentException(); } for (int i = 0; i < arr.Length; i++) { for (int j = i + 1; j < arr.Length; j++) { if (compare(arr[j], arr[i]) > 0) { Swap(arr[i], arr[j]); } } } } public static int CompareString(string s, string t) { if (s == t) return 0; if (s == null) return -1; if (t == null) return 1; if (s.Length < t.Length) return -1; if (s.Length > t.Length) return 1; return s.CompareTo(t); } static void Main(string[] args) { string[] array = new string[] {"bacd", "abcd", "ff", "rty", "r"}; Func<string, string, int> cs = CompareString; Sort(array, cs); for (int i = 0; i < array.Length; i++) { Console.WriteLine(array[i]); } Console.ReadLine(); } } }
Решение задачи: «Написать метод, реализующий упорядочивание массива произвольного типа»
textual
Листинг программы
Swap(ref arr[i],ref arr[j]);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д