Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практики(Вариант №1) / Практическая работа №2.pdf
Скачиваний:
0
Добавлен:
23.02.2026
Размер:
351.69 Кб
Скачать

Приложение Б

(обязательное) Быстрая сортировка

using System;

using System.Diagnostics; class Program

{static long comparisons = 0; static long swaps = 0; static void Main()

{int[] sizes = { 1, 2, 3, 4, 5, 10, 15, 20, 25, 30, 40, 50, 75, 100, 150, 200, 250, 300, 400, 500, 600, 800, 1000 };

Console.WriteLine("Быстрая сортировка - Результаты:");

Console.WriteLine("Размер\tВремя (мс)\tСравнения\tПерестановки\tВсего операций");

Console.WriteLine(new string('-', 60));

foreach (int size in sizes)

{

comparisons = 0;

 

 

swaps = 0;

 

int[] arr = new int[size];

 

Random random = new Random();

 

// Генерация отрицательных целых чисел от -1000000 до -1

 

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

 

{

arr[i] = -random.Next(1, 1000001); // от -1000000 до -1

 

}

 

 

 

 

int[] arrCopy = (int[])arr.Clone();

 

Stopwatch stopwatch = new Stopwatch();

 

stopwatch.Start();

 

quicksort(arrCopy, 0, arrCopy.Length - 1);

 

stopwatch.Stop();

 

// Проверка корректности сортировки

 

bool isSorted = true;

 

for (int i = 0; i < arrCopy.Length - 1; i++)

 

{

if (arrCopy[i] > arrCopy[i + 1])

 

 

 

 

{

isSorted = false;

 

 

 

 

 

}

break;

 

}

 

 

 

 

 

 

Console.WriteLine($"{size}

\t{stopwatch.Elapsed.TotalMilliseconds:F6}\t{comparisons}\t\t{swaps}\t\t{comparisons +

swaps}" +

(isSorted ? "" : " (НЕ ОТСОРТИРОВАНО)"));

 

 

}

}

 

 

 

static void quicksort(int[] arr, int l, int r)

{comparisons++;

if (l >= r) return;

15

int i = l; int j = r;

int opora = arr[l + (r - l) / 2]; while (i <= j)

{while (arr[i] < opora)

{comparisons++;

i++;

 

}

 

 

while (arr[j] > opora)

 

{

comparisons++;

 

 

 

 

j--;

 

}

 

 

if (i <= j)

 

{

swaps++;

 

 

 

 

int temp = arr[i];

 

 

arr[i] = arr[j];

 

 

arr[j] = temp;

 

 

i++;

 

}

j--;

}

 

 

 

if (l < j)

{quicksort(arr, l, j);

}

if (i < r)

{quicksort(arr, i, r);

}} }

16

Приложение В

(обязательное) Сортировка выбором

using System;

using System.Diagnostics; class Program

{static void Main()

{int[] sizes = { 1, 2, 3, 4, 5, 10, 15, 20, 25, 30, 40, 50, 75, 100, 150, 200, 250, 300, 400, 500, 600, 800, 1000 };

Console.WriteLine("Сортировка выбором - Результаты:"); Console.WriteLine("Размер\tВремя (мс)\tСравнения\tПерестановки\tВсего операций"); Console.WriteLine(new string('-', 60));

foreach (int size in sizes)

{

int[] arr = new int[size];

 

 

Random random = new Random();

 

// Генерация отрицательных целых чисел от -1000000 до -1

 

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

 

{

arr[i] = -random.Next(1, 1000001); // от -1000000 до -1

 

}

 

 

 

int[] arrCopy = (int[])arr.Clone();

 

long comparisons = 0;

 

long swaps = 0;

 

Stopwatch stopwatch = new Stopwatch();

 

stopwatch.Start();

 

// Реализация сортировки выбором

 

int n = arrCopy.Length;

 

for (int i = 0; i < n - 1; i++)

 

{

int minIndex = i;

 

 

for (int j = i + 1; j < n; j++)

{

comparisons++; // счетчик сравнений if (arrCopy[j] < arrCopy[minIndex])

{ minIndex = j;

}}

if (minIndex != i)

{swaps++; // счетчик перестановок int temp = arrCopy[i]; arrCopy[i] = arrCopy[minIndex]; arrCopy[minIndex] = temp;

} }

stopwatch.Stop();

// Проверка корректности сортировки bool isSorted = true;

for (int i = 0; i < n - 1; i++)

{

17

if (arrCopy[i] > arrCopy[i + 1])

{ isSorted = false;

}} break;

Console.WriteLine($"{size} \t{stopwatch.Elapsed.TotalMilliseconds:F6}\t{comparisons}\t\t{swaps}\t\t{comparisons +

swaps}" + (isSorted ? "" : " (НЕ ОТСОРТИРОВАНО)"));

} } }

18

Соседние файлы в папке Практики(Вариант №1)