Написать метод, реализующий упорядочивание массива произвольного типа - 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]);