Вступ про сортування вставки на Java
Якщо ви програміст, ви, мабуть, вже чули про сортування. Сортування - це в основному розташування елементів або у порядку зростання, або у порядку зменшення. Існує так багато алгоритмів сортування для сортування елементів, і кожен алгоритм має різні способи сортування, різну складність. Отже, це залежить від конкретного сценарію та кількості елементів щодо того, який алгоритм слід використовувати. Вставка - це також один із найпоширеніших алгоритмів сортування, що має загальну складність O (n 2) і виконується так, як ми сортуємо гральні карти в наших руках. У цій темі ми дізнаємось про сортування вставки на Java.
Як працює сортування вставки на Java?
Давайте розберемося з роботою сортування вставки на прикладі. Припустимо, є масив з іменем arr, що містить вказані нижче елементи:
10 5 8 20 30 2 9 7
Крок №1 - Сортування вставки починається з 2-го елемента масиву, тобто з 5-го, з огляду на 1-й елемент масиву, що складається з себе. Тепер елемент 5 порівнюється з 10, оскільки 5 менше 10, тому 10 переміщується на 1 положення вперед, а перед ним вставляється 5.
Тепер отриманий масив:
5 10 8 20 30 2 9 7
Крок №2 - Тепер елемент arr (2), тобто 8 порівнюється з елементом arr (1), тобто 10. Оскільки 8 менше, ніж його попередній елемент 10, він зміщується на крок вперед від свого положення і тоді він порівняно з 5. Оскільки 8 більше, ніж 5, тому він вставляється після нього.
Тоді отриманий масив:
5 8 10 20 30 2 9 7
Крок №3 - Тепер елемент 20 порівнюють з 10, оскільки він більший за 10, він залишається у своєму положенні.
5 8 10 20 30 2 9 7
Крок №4 - Елемент 30 порівнюється з 20, а оскільки він перевищує 20, жодних змін не буде внесено, а масив залишиться таким, який він є. Тепер масив був би
5 8 10 20 30 2 9 7
Крок №5 - Елемент 2 порівнюється з 30, оскільки він менший, ніж 30, він зміщується на одну позицію вперед, потім його порівнюють з 20, 10, 8, 5, по черзі, і всі елементи зміщуються в 1 положення вперед і 2 вставляється перед 5.
Отриманий масив:
2 5 8 10 20 30 9 7
Крок № 6 - Елемент 9 порівнюється з 30, оскільки він менший за 30, він порівнюється з 20, 10 один за одним, і елемент зміщується на 1 положення вперед, а 9 вставляється перед 10 і після 8. Отриманий масив:
2 5 8 9 10 20 30 7
Крок № 7 - Елемент 7 порівнюють з 30, а оскільки він менший за 30, він порівнюється з 30, 20, 10, 9, 8 і всі елементи зміщуються на 1 положення вперед один на один і 7 вставляється перед 8 Отриманим масивом стане:
2 5 7 8 9 10 20 30
Таким чином всі елементи масиву сортуються за допомогою сортування вставки, починаючи зіставлення з попереднім елементом.
Приклади для здійснення сортування вкладок у Java
Сортування вставки в Java - це простий алгоритм сортування, який підходить для всіх малих наборів даних.
public class InsertionSort (
public static void insertionSort(int arr()) ( for (int j = 1; j < arr.length; j++) ( int key = arr(j); int i = j-1;
while ( (i > -1) && ( arr(i) > key ) ) ( arr(i+1) = arr(i); i--; )
arr(i+1) = key;
)
)
static void printArray(int arr()) ( int len = arr.length;
//simple for loop to print the elements of sorted array for (int i= 0; i System.out.print(arr(i) + " " );
System.out.println();
)
public static void main(String args())( int() arr1 = (21, 18, 15, 23, 52, 12, 61);
//calling the sort function which performs insertion sort insertionSort(arr1);
//calling the printArray function which performs printing of array printArray(arr1);
)
)public class InsertionSort (
public static void insertionSort(int arr()) ( for (int j = 1; j < arr.length; j++) ( int key = arr(j); int i = j-1;
while ( (i > -1) && ( arr(i) > key ) ) ( arr(i+1) = arr(i); i--; )
arr(i+1) = key;
)
)
static void printArray(int arr()) ( int len = arr.length;
//simple for loop to print the elements of sorted array for (int i= 0; i System.out.print(arr(i) + " " );
System.out.println();
)
public static void main(String args())( int() arr1 = (21, 18, 15, 23, 52, 12, 61);
//calling the sort function which performs insertion sort insertionSort(arr1);
//calling the printArray function which performs printing of array printArray(arr1);
)
)
Вихід:
12 15 18 21 23 52 61
Пояснення:
У вищенаведеній програмі сортування вставки функція insertionSort () використовується для сортування елементів вихідного масиву. Сортування починається з другого елемента, оскільки перший елемент вважається сортованим сам по собі. Отже цикл 'j' починається з індексу 1 масиву. 'i' - це змінна відслідковування індексу безпосередньо перед 'j', щоб порівняти значення. ' key '- це змінна, що містить значення поточного елемента, який повинен бути розташований у відсортованому положенні. while () цикл виконується, якщо поточне значення менше найменшого лівого значення, щоб зрушення елементів можна було обробити і в кінці вставити поточний елемент у потрібне положення. Функція printArray () використовується для остаточного друку відсортованого масиву.
1. Кращий випадок
У сортуванні вставки найкращий випадок був би, коли всі елементи масиву вже відсортовані. Таким чином, коли будь-який елемент порівнюється з його лівим лівим елементом, він завжди більший, а значить, ніяке зміщення та вставлення елементів не буде оброблено. У цьому випадку найкраща складність випадку буде лінійною, тобто O (n).
2. Найгірший випадок
У наведеному вище коді вставки сортування найгіршим випадком було б, коли масив знаходиться в зворотному порядку, тому кожен раз, коли елемент порівнюється з його лівим лівим елементом, він завжди менший, а потім порівнюється з усіма діючими елементами, які мають місце і зміщуються і робиться вставка. У цьому випадку складність сортування вставки становить O (n 2).
3. Середній випадок
Навіть у середньому випадку сортування вставки має складність O (n 2), при якій деякі елементи не потребують зміщення, тоді як деякі елементи зміщуються зі своїх позицій та виконується вставка у потрібному положенні.
4. Найкраще використання
Сортування вставки найкраще використовувати, коли розмір масиву не дуже великий, або потрібно лише сортувати невелику кількість елементів, в яких майже всі елементи відсортовані, і потрібно внести лише деякі зміни. Сортування вставки - один з найшвидших алгоритмів для масиву невеликих розмірів навіть швидше, ніж Швидкий сортування. Фактично, quicksort використовує сортування Insertion при сортуванні її невеликих частин масиву.
Висновок
Наведене вище пояснення чітко показує роботу та реалізацію сортування вкладень у Java. І для інших мов програмування логіка виконання Insertion sort залишається тією само, що змінюється тільки синтаксис. Перш ніж застосовувати будь-який алгоритм сортування, дуже важливо провести аналіз сценарію, коли сортування потрібно проводити, оскільки не кожен алгоритм сортування підходить для всіх сценаріїв.
Рекомендовані статті
Це посібник зі сортування вставки на Java. Тут ми обговорюємо, як працює сортування вставки в Java з прикладами для впровадження сортування вставки на Java. Ви також можете переглянути наступні статті, щоб дізнатися більше -
- Квадратний корінь у Java
- BorderLayout на Java
- Зворотне число на Java
- StringBuffer на Java
- Квадратний корінь в PHP
- Квадратний корінь у JavaScript
- Керівництво по головних 6 сортування алгоритмів в Python