Сортировка выбором, сортировка вставкой, сортировка заменой, сортировка обменом ("пузырьковая" сортировка) - C#
Формулировка задачи:
Создать класс, содержащий массив и реализующий алгоритмы сортировки и бинарного поиска в этом массиве.
Класс описать с помощью обобщенных алгоритмов Generics.
Сортировку реализовать одним из методов: сортировка выбором, сортировка вставкой, сортировка заменой, сортировка обменом ("пузырьковая" сортировка).
Решение задачи: «Сортировка выбором, сортировка вставкой, сортировка заменой, сортировка обменом ("пузырьковая" сортировка)»
textual
Листинг программы
- class Search<T> where T : IComparable
- {
- private T[] _mas;
- public Search(params T[] mas)
- {
- _mas = mas;
- }
- private void Sort()
- {
- int length = _mas.Length;
- for (int i = 0; i < length - 1; i++)
- {
- int min = i;
- for (int j = i + 1; j < length; j++)
- {
- if (_mas[j].CompareTo(_mas[min]) < 0)
- {
- min = j;
- }
- }
- if (min != i)
- {
- T temp = _mas[i];
- _mas[i] = _mas[min];
- _mas[min] = temp;
- }
- }
- }
- public int? BinarySearch(T value)
- {
- // Пустой массив
- if (_mas.Length == 0) return null;
- // Вызов сортировки
- Sort();
- // Элемент отсутствует
- if (_mas[0].CompareTo(value) > 0 || _mas[_mas.Length - 1].CompareTo(value) < 0) return null;
- int first = 0;
- int last = _mas.Length;
- while (first < last)
- {
- int mid = first + (last - first)/2;
- if (value.CompareTo(_mas[mid]) <= 0) last = mid;
- else first = mid + 1;
- }
- // Элемент найден, возвращаем индекс в массиве
- if (_mas[last].CompareTo(value) == 0) return last;
- // Элемент не найден
- else return null;
- }
- }
- public static void Main(string[] args)
- {
- int[] mas = { 10, 2, 45, 4, 6131, 10, 1, 2, 3, 4, 6, 7, 89, 1, 0, 10, 8, 9 };
- var s = new Search<int>(mas);
- int? binarySearch = s.BinarySearch(45);
- if (binarySearch == null)
- {
- Console.WriteLine("Элемент не найден");
- }
- else
- {
- Console.WriteLine("Индекс элмента {0} со значениям {1}", binarySearch, mas[(int) binarySearch]);
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д