Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практики / ПР1 / СД_П1.pdf
Скачиваний:
1
Добавлен:
27.06.2025
Размер:
245.99 Кб
Скачать

 

2

Алгоритмическая сложность

 

 

 

 

 

Алгоритм

Структура

Временная сложность

Вспомогате

 

данных

 

 

 

льные

 

 

 

 

 

данные

 

 

 

 

 

 

 

 

Лучшее

В среднем

В худшем

В худшем

 

 

 

 

 

 

Сортировка

Массив

O(n log(n))

Ω(n^2 / 2^F)

O(n^2)

O(1)

расческой

 

 

 

 

 

 

 

 

 

 

 

Быстрая

Массив

O(n log(n))

O(n log(n))

O(n^2)

O(n)

сортировка

 

 

 

 

 

 

 

 

 

 

 

Пузырькова

Массив

O(n)

O(n^2)

O(n^2)

O(1)

я

 

 

 

 

 

сортировка

 

 

 

 

 

Таблица 1 — Сравнение алгоритмической сложности алгоритмов

9

Заключение

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

Наиболее затруднительным было выполнение быстрой сортировки.

10

Приложение А (обязательное)

Сортировка расческой

float[] arr = new float[25]; Random random = new Random(); for (int i = 0; i < arr.Length; i++)

{

arr[i] = (float)(random.NextDouble() * -100);

}

Console.WriteLine("Исходный массив:"); foreach (var item in arr)

{

Console.Write($"{item:F2}" + " ");

}

int n = arr.Length;

double factor = 1.2473309; int step = n - 1;

while (step >= 1)

{

for (int i = 0; i + step < n; i++)

{

if (arr[i] > arr[i + step])

{

float temp = arr[i]; arr[i] = arr[i + step]; arr[i + step] = temp;

}

}

11

step = (int)(step / factor);

}

Console.WriteLine("сортировка расческой:"); foreach (var item in arr)

{

Console.Write($"{item:f2}" + " ");

}

12

Приложение Б (обязательное)

Быстрая сортировка static void quicksort(float[] arr, int l, int r)

{

int i = l; int j = r;

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

{

while (arr[i] < pivot) i++; while (arr[j] > pivot) j--; if (i <= j)

{

float temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; i++; j--;

}

}

if (i < r) { quicksort(arr, i, r); } if (l < j) { quicksort(arr, l, j); }

}

float[] arr = new float[25]; Random random = new Random(); for (int i = 0; i < arr.Length; i++)

{

arr[i] = (float)(random.NextDouble() * -100);

}

13

Console.WriteLine("Исходный массив:"); foreach (var item in arr)

{

Console.Write($"{item:F2}" + " ");

}

float[] arr = new float[25]; Random random = new Random(); for (int i = 0; i < arr.Length; i++)

{

arr[i] = (float)(random.NextDouble() * -100);

}

Console.WriteLine("Исходный массив:"); foreach (var item in arr)

{

Console.Write($"{item:F2}" + " ");

}

Console.WriteLine(); quicksort(arr, 0, arr.Length - 1);

Console.WriteLine("Быстрая сортировка:"); foreach (var item in arr)

{

Console.Write($"{item:F2}" + " ");

}

14

Приложение В (обязательное)

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

float[] arr = new float[25]; Random random = new Random(); for (int i = 0; i < arr.Length; i++)

{

arr[i] = (float)(random.NextDouble() * -100);

}

Console.WriteLine("Исходный массив:"); foreach (var item in arr)

{

Console.Write($"{item:F2}" + " ");

}

int k = arr.Length; bool swapped;

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

{

swapped = false;

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

{

if (arr[j] > arr[j + 1])

{

float temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; swapped = true;

}

}

15

if (!swapped) break;

}

Console.WriteLine("Сортировка обменом:"); foreach (var item in arr)

{

Console.Write($"{item:F2} ");

}

16

Соседние файлы в папке ПР1