Сортировка выбором, сортировка вставкой, сортировка заменой, сортировка обменом ("пузырьковая" сортировка) - 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]);
            }
        }

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


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

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

8   голосов , оценка 4 из 5
Похожие ответы