Создать параметризованный метод Sort - C#
Формулировка задачи:
Необходимо создать параметризованный метод Sort с параметром – типом данных. Реализовать в нем сортировку методом выбора (алгоритм ее состоит в том, что сначала выбирается наименьший элемент массива и меняется местами с первым элементом. Затем просматриваются элементы, начиная со второго, и наименьший из них меняется местами со вторым элементом и так далее. Всего произведено будет n-1 замен. На последнем проходе цикла при необходимости меняются местами предпоследний и последний элементы массива). На данный метод накладывается ограничение – объекты можно сравнивать друг с другом с помощью метода CompareTo.
Отсортировать с помощью данного метода следующие массивы:
Помогите пожалуйста
a = { 1, 6, 4, 2, 7, 5, 3 }
b = { 1.1, 6.6, 4.4, 2.4, 7.6, 5.5, 3.3 }
c = { sdef, sd, sdfsd, sdf }Решение задачи: «Создать параметризованный метод Sort»
textual
Листинг программы
using System;
namespace ConsoleApp1
{
class Program
{
static void Swap<T>(ref T lft, ref T rht)
{
T t = lft;
lft = rht;
rht = t;
}
static void SelectionSort<T>(T[] a) where T : IComparable<T>
{
for (int i = 0; i < a.Length - 1; ++i)
{
int min = i;
for (int j = i + 1; j < a.Length; ++j)
{
if (a[j].CompareTo(a[min]) < 0)
min = j;
}
Swap(ref a[i], ref a[min]);
}
}
static void Main()
{
int[] a = { 1, 6, 4, 2, 7, 5, 3 };
Console.WriteLine(String.Join(" ", a));
SelectionSort(a);
Console.WriteLine(String.Join(" ", a));
Console.WriteLine();
double[] b = { 1.1, 6.6, 4.4, 2.4, 7.6, 5.5, 3.3 };
Console.WriteLine(String.Join(" ", b));
SelectionSort(b);
Console.WriteLine(String.Join(" ", b));
Console.WriteLine();
string[] c = { "sdef", "sd", "sdfsd", "sdf" };
Console.WriteLine(String.Join(" ", c));
SelectionSort(c);
Console.WriteLine(String.Join(" ", c));
}
}
}