Частина тексту файла (без зображень, графіків і формул):
НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ УКРАЇНИ
“КИЇВСЬКИЙ ПОЛІТЕХНІЧНИЙ ІНСТИТУТ
імені ІГОРЯ СІКОРСЬКОГО”
ЗВІТ
з лабораторної роботи №3
з навчальної дисципліни “Програмування складних алгоритмів”
Тема:
Методи сортування
Варіант 7
Київ 20____
І. Мета:
Метою лабораторної роботи є набуття практичних навичок з використання простих методів сортування.
Теоретична частина
Сортування вставкою:
Сортування масивів методом вставки(включенням) здійснюються таким чином.
Масив розділяється на дві частини: відсортовану й невідсортовану. Елементи з невідсортованої частини по черзі вибираються й вставляються у відсортовану частину так, щоб не порушити в ній упорядкованість елементів. На початку роботи алгоритму за відсортовану частину масиву приймають тільки один перший елемент, а за невідсортовану частину - всі інші елементи.
Таким чином, алгоритм буде складатися з n-1-го проходу (n - розмірність масиву), кожний з яких буде включати чотири дії:
- взяття чергового i-го невідсортованого елемента й збереження його в додатковій змінній;
- пошук позиції j у відсортованій частині масиву, у якій наявність узятого елемента не порушить упорядкованості елементів;
- зсув елементів масиву від i-1-го до j-го вправо, щоб звільнити знайдену позицію вставки;
- вставка взятого елемента в знайдену j-ю позицію.
Сортування вибором:
Сортування масивів методом вибору (виділення) здійснюються таким чином.
Знаходимо (вибираємо) у масиві елемент із мінімальним значенням на інтервалі від 1- го елемента до n-го (останнього) елемента й міняємо його місцями з першим елементом. На другому кроці знаходимо елемент із мінімальним значенням на інтервалі від 2-го до n-го елемента й міняємо його місцями із другим елементом.
І так далі для всіх елементів до n-1-го.
ІІ. Завдання:
/
Завдання по варіанту
Метод сортування вибором
/
Оцінка складності алгоритму
Складність алгоритму сортування вибором в усіх випадках – O(n^2). Складність алгоритму сортування вставками в середньому – O(n^2), а у кращому випадку – O(n).
Спосіб сортування
Розмір
N*N
Час виконання
Сортування вибором
10*10
15100нс
100*100
3111500нс
250*250
8833000нс
500*500
49134400нс
Сортування вставками
10*10
16200нс
100*100
3564000нс
250*250
7847100нс
500*500
27690600нс
Виділено числа з меншим часом виконування алгоритму на певному обсязі масиву.
Можна зробити висновок, що на меших обсягах час виконання алгоритму сортування вибором бистріший, а алгоритм сортування вставками швидший на більших обсягах даних.
ІІІ. Результати виконання лабораторної роботи.
/
Блок-схема
//
//
Програмний код
import java.util.*;public class LR3 { public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.print("Введіть розмір масиву: "); int n = scan.nextInt(); int[][] arr = new int[n][n]; for (int i = 0; i < arr.length; i++) for(int j = 0; j < arr.length; j++) arr[i][j] = (int) (Math.random() * 101) - 50; int[][] copy = new int[n][n]; for (int i = 0; i < copy.length; i++) System.arraycopy(arr[i], 0, copy[i], 0, copy.length); System.out.println("Початковий масив:"); printArr(arr); long firstTime = System.nanoTime(); selectionSort(arr); firstTime = System.nanoTime() - firstTime; System.out.println("\nМасив після сортування вибором:"); printArr(arr); System.out.println("\nЧас виконання сортування вибором: " + firstTime + " наносекунд."); long secondTime = System.nanoTime(); insertionSort(copy); secondTime = System.nanoTime() - secondTime; System.out.println("\nМасив після сортування вставками:"); printArr(arr); System.out.println("\nЧас виконання сортування вставками: " + secondTime + " наносекунд."); } public static void printArr(int[][] arr) { for (int i = 0; i < arr.length; i++) { for (int j = 0; j < arr.length; j++) { System.out.print(arr[i][j] + "\t"); } System.out.println(); } } public static void selectionSort(int[][] arr) { for(int i=0;i<arr.length;i++) { for (int j = i; j < arr.length; j++) { int pos = j; for (int k = j + 1; k < arr.length; k++) if (arr[i][k] > arr[i][pos]) pos = k; int temp = arr[i][pos]; arr[i][pos] = arr[i][j]; arr[i][j] = temp; } } } public static void insertionSort(int[][] arr) { for (int i = 0; i < arr.length; i++) { for (int j = 1+i; j < arr.length; j++) { int key = arr[i][j]; int k = j - 1; while (k >= i && arr[i][k] < key) { arr[i][k + 1] = arr[i][k]; k = k - 1; } arr[i][k + 1] = key; } } }}
IV. Висновки.
Написано програму, що сортує масив двома способами: вставками та вибором. Було визначено, що сортування вставками набагато бистріше при сортуванні великих масивів, а сортування вибором показує трохи кращі результати лише при сортуванні малих масивів.
Ви не можете залишити коментар. Для цього, будь ласка, увійдіть
або зареєструйтесь.
Ділись своїми роботами та отримуй миттєві бонуси!
Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!