Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практика 1(СД).docx
Скачиваний:
0
Добавлен:
08.10.2025
Размер:
224 Кб
Скачать
☆

Заключение

В результате выполнения данной лабораторной работы были разработаны алгоритмы сортировкой расческой, быстрой сортировки и сортировки выбором, в результате чего были получены навыки работы со структурами данных.

Приложение а Программа для сортировки массива быстрой, расческой и выбором

using System;

namespace SortingApp

{

class Program

{

private static int[] array;

private const int SIZE = 20;

private static Random random = new Random();

static void Main(string[] args)

{

bool exit = false;

while (!exit)

{

InitializeArray();

Console.WriteLine("Сортировки");

Console.WriteLine($"Исходный массив ({SIZE} элементов):");

PrintArray(array);

Console.WriteLine();

Console.WriteLine("1 - Быстрая сортировка");

Console.WriteLine("2 - Сортировка расческой");

Console.WriteLine("3 - Сортировка выбором (только отрицательные числа)");

Console.WriteLine("4 - Выход");

Console.Write("Выберите вариант: ");

string choice = Console.ReadLine();

Console.WriteLine();

int[] originalArray = (int[])array.Clone();

switch (choice)

{

case "1":

Console.WriteLine("Быстрая сортировка:");

QuickSort(array, 0, array.Length - 1);

array = (int[])originalArray.Clone();

break;

case "2":

Console.WriteLine("Сортировка расческой:");

int[] combArray = (int[])array.Clone();

CombSort(combArray);

array = (int[])originalArray.Clone();

break;

case "3":

Console.WriteLine("Сортировка выбором (только отрицательные числа минимум -10^6):");

int[] selectionArray = (int[])array.Clone();

If (CheckArrayForNegativeRange(selectionArray))

{

SelectionSort(selectionArray);

}

else

{

Console.WriteLine("Ошибка: массив содержит числа вне диапазона (должны быть отрицательные, >= -1000000).");

}

array = (int[])originalArray.Clone();

break;

case "4":

exit = true;

break;

default:

Console.WriteLine("Неверный выбор!");

break;

}

If (!exit)

{

Console.WriteLine();

Console.WriteLine("Нажмите любую клавишу для продолжения...");

Console.ReadKey();

Console.Clear();

}

}

}

// Инициализация массива отрицательными числами от -1 до -1000000 включительно

static void InitializeArray()

{

array = new int[SIZE];

for (int i = 0; i < SIZE; i++)

{

array[i] = -random.Next(1, 1_000_001);

}

}

static void PrintArray<T>(T[] arr) where T : IFormattable

{

for (int i = 0; i < arr.Length; i++)

{

Console.Write($"{arr[i],10} ");

}

Console.WriteLine();

}

static bool CheckArrayForNegativeRange(int[] arr)

{

foreach (int num in arr)

{

if (num >= 0 || num < -1_000_000)

{

return false;

}

}

return true;

}

static void QuickSort(int[] numbers, int left, int right)

{

Console.WriteLine("До сортировки:");

PrintArray(numbers);

QuickSortRecursive(numbers, left, right);

Console.WriteLine("После сортировки:");

PrintArray(numbers);

}

static void QuickSortRecursive(int[] numbers, int left, int right)

{

Соседние файлы в предмете Структуры данных