Написать метод, реализующий упорядочивание массива произвольного типа - 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]);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д