Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СиАОД_КурсоваяРабота_БСТ.docx
Скачиваний:
0
Добавлен:
18.01.2026
Размер:
296.31 Кб
Скачать

Код программы

using System;

using System.Diagnostics;

namespace LR1

{

internal class Program

{

static void Main(string[] args)

{

Console.WriteLine("Введите количество элементов массива:");

int n = int.Parse(Console.ReadLine());

int[] nums = new int[n];

FillingArray(nums);

//Console.WriteLine("Неотсортированный массив:");

//OutArray(nums);

Console.WriteLine("");

Console.WriteLine($"Количество элементов массива: {n}");

Console.WriteLine("");

Stopwatch sw = new Stopwatch();

sw.Restart();

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

sw.Stop();

Console.WriteLine($"Быстрая сортировка, длительность {sw.Elapsed}");

//OutArray(nums);

FillingArray(nums);

Console.WriteLine("");

sw.Restart();

SelectionSort(nums);

sw.Stop();

Console.WriteLine($"Сортировка обменом, длительность {sw.Elapsed}");

//OutArray(nums);

Console.WriteLine("");

FillingArray(nums);

sw.Restart();

Array.Sort(nums);

sw.Stop();

Console.WriteLine($"Стандартная функция сортировки, длительность {sw.Elapsed}");

// OutArray(nums);

}

//Быстрая сортировка

public static int[] QuickSort(int[] array, int leftIndex, int rightIndex)

{

var i = leftIndex;

var j = rightIndex;

var pivot = array[leftIndex];

while (i <= j)

{

while (array[i] < pivot)

{

i++;

}

while (array[j] > pivot)

{

j--;

}

if (i <= j)

{

int temp = array[i];

array[i] = array[j];

array[j] = temp;

i++;

j--;

}

}

if (leftIndex < j)

QuickSort(array, leftIndex, j);

if (i < rightIndex)

QuickSort(array, i, rightIndex);

return array;

}

//Сортировка обменом

static int[] SelectionSort(int[] nums)

{

int index = 0;

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

{

index = i;

for (int j = i; j < nums.Length; j++)

{

if (nums[j] < nums[index])

{

index = j;

}

}

if (nums[i] == nums[index])

{

continue;

}

int tmp = nums[i];

nums[i] = nums[index];

nums[index] = tmp;

}

return nums;

}

//Вывод элементов массива

static void OutArray(int[] nums)

{

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

{

Console.Write($"{nums[i]} ");

}

}

//Заполнение массива

static int[] FillingArray(int[] nums)

{

var random = new Random(20);

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

{

nums[i] = random.Next(1, 999);

}

return nums;

}

}

}

Вывод

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

По итогам экспериментов быстрее других с задачей справилась встроенная сортировка языка C#, ей немного уступила быстрая сортировка. Сортировка обменом показала на порядок более худшие результаты, кроме того, по мере роста массива ее результат ухудшался драматически.