Сортировка выбором, сортировка вставкой, сортировка заменой, сортировка обменом ("пузырьковая" сортировка) - C#

Узнай цену своей работы

Формулировка задачи:

Создать класс, содержащий массив и реализующий алгоритмы сортировки и бинарного поиска в этом массиве. Класс описать с помощью обобщенных алгоритмов Generics. Сортировку реализовать одним из методов: сортировка выбором, сортировка вставкой, сортировка заменой, сортировка обменом ("пузырьковая" сортировка).

Решение задачи: «Сортировка выбором, сортировка вставкой, сортировка заменой, сортировка обменом ("пузырьковая" сортировка)»

textual
Листинг программы
  1.         class Search<T> where T : IComparable
  2.         {
  3.             private T[] _mas;
  4.  
  5.             public Search(params T[] mas)
  6.             {
  7.                 _mas = mas;
  8.             }
  9.  
  10.             private void Sort()
  11.             {
  12.                 int length = _mas.Length;
  13.  
  14.                 for (int i = 0; i < length - 1; i++)
  15.                 {
  16.                     int min = i;
  17.                     for (int j = i + 1; j < length; j++)
  18.                     {
  19.                         if (_mas[j].CompareTo(_mas[min]) < 0)
  20.                         {
  21.                             min = j;
  22.                         }
  23.                     }
  24.                     if (min != i)
  25.                     {
  26.                         T temp = _mas[i];
  27.                         _mas[i] = _mas[min];
  28.                         _mas[min] = temp;
  29.                     }
  30.                 }
  31.             }
  32.  
  33.  
  34.             public int? BinarySearch(T value)
  35.             {
  36.                 // Пустой массив
  37.                 if (_mas.Length == 0) return null;
  38.                 // Вызов сортировки
  39.                 Sort();
  40.                 // Элемент отсутствует
  41.                 if (_mas[0].CompareTo(value) > 0 || _mas[_mas.Length - 1].CompareTo(value) < 0) return null;
  42.  
  43.                 int first = 0;
  44.                 int last = _mas.Length;
  45.  
  46.                 while (first < last)
  47.                 {
  48.                     int mid = first + (last - first)/2;
  49.  
  50.                     if (value.CompareTo(_mas[mid]) <= 0) last = mid;
  51.                     else first = mid + 1;
  52.                 }
  53.  
  54.                 // Элемент найден, возвращаем индекс в массиве
  55.                 if (_mas[last].CompareTo(value) == 0) return last;
  56.                 // Элемент не найден
  57.                 else return null;
  58.             }
  59.         }
  60.  
  61.         public static void Main(string[] args)
  62.         {
  63.             int[] mas = { 10, 2, 45, 4, 6131, 10, 1, 2, 3, 4, 6, 7, 89, 1, 0, 10, 8, 9 };
  64.             var s = new Search<int>(mas);
  65.  
  66.             int? binarySearch = s.BinarySearch(45);
  67.             if (binarySearch == null)
  68.             {
  69.                 Console.WriteLine("Элемент не найден");
  70.             }
  71.             else
  72.             {
  73.                 Console.WriteLine("Индекс элмента {0} со значениям {1}", binarySearch, mas[(int) binarySearch]);
  74.             }
  75.         }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы