Вступ до швидкого сортування алгоритмів на Java

Швидкий сорт в java також відомий як сортування обміну розділами - це алгоритм сортування розділення та підкори. Швидке сортування - хороший приклад алгоритму, який найкраще використовує кеші процесорних процесів, завдяки їх розбиттю і підкорює характер. Алгоритм Quicksort - один з найбільш використовуваних алгоритмів сортування, особливо для сортування великих списків і більшість мов програмування реалізували його. В алгоритмі Quicksort вихідні дані діляться на дві частини, які індивідуально сортуються і потім об'єднуються для отримання відсортованих даних.

Розглянемо, що масив (8, 6, 3, 4, 9, 2, 1, 7) необхідно сортувати за допомогою швидкого сортування.

Кроки до впровадження алгоритмів швидкого сортування

1. Виберіть з масиву елемент, званий pivot. Як правило, середній елемент вибирається як шарнір. Візьмемо 4 як опорний.

2. Переставте масив на дві частини таким чином, щоб елементи, менші за обертання, перейшли до цього, а елементи, що перевищують обертове, з'являться після стрижня. Дотримуються наступних кроків:

  • Виберіть крайній лівий елемент, тобто 8, оскільки 4 - це шарнір, а 8 - більше 4, 8 потрібно перемістити праворуч від 4, з правого боку залишаємо 7, оскільки він більший за 4, і вибираємо 1 для заміни з 8 звідси після заміни масиву стає: 1, 6, 3, 4, 9, 2, 8, 7
  • Виберіть наступний лівий елемент, тобто 6, Оскільки 4 - це шарнір, а 6 - більше 4, 6 потрібно перемістити праворуч від 4, Праворуч залишимо 7, 8, оскільки вони більше 4, і виберіть 2 для заміни на 6 звідси після заміни масиву стає: 1, 2, 3, 4, 9, 6, 8, 7
  • Тепер, оскільки всі елементи ліворуч від шарніра менше, ніж шарнір, а всі елементи праворуч від обертання є більшими за обертання, ми робимо з чотирма як 4.

3. Рекурсивно застосуйте кроки 1 і 2 для лівого підмасиву (масив з елементами менше, ніж стрижневий) та для правого підмасиву (масив з елементами більше, ніж зведений). Якщо масив містить лише один або нульовий елемент, то масив вважається асоційованим.

Програма для впровадження алгоритмів швидкого сортування

Ось програма java для сортування масиву цілих чисел за допомогою алгоритму швидкого сортування.

Код:

import java.lang.*;
import java.util.*;
public class Main (
private int array();
private int length;
public void sort(int() inputArrayArr) (
if (inputArrayArr == null || inputArrayArr.length == 0) (
return;
)
this.array = inputArrayArr;
length = inputArrayArr.length;
performQuickSort(0, length - 1);
)
private void performQuickSort(int lowerIndex, int higherIndex) (
int i = lowerIndex;
int j = higherIndex;
// calculate pivot number
// middle element taken as pivot
int pivot = array(lowerIndex+(higherIndex-lowerIndex)/2);
// Divide into two subarrays
while (i <= j) (
/**
* In each iteration, find an element from left side of the pivot which
* is greater than the pivot value, and also find an element
* From right side of the pivot which is less than the pivot value. Once the search
* is complete, we exchange both elements.
*/
while (array(i) < pivot) (
i++;
)
while (array(j) > pivot) (
j--;
)
if (i <= j) (
swapNumbers(i, j);
//move index to next position on both sides
i++;
j--;
)
)
// call performQuickSort() method recursively
if (lowerIndex < j)
performQuickSort(lowerIndex, j);
if (i < higherIndex)
performQuickSort(i, higherIndex);
)
private void swapNumbers(int i, int j) (
int temp = array(i);
array(i) = array(j);
array(j) = temp;
)
public static void main(String args())(
Main quickSort = new Main();
int() inputArray = (8, 6, 3, 4, 9, 2, 1, 7);
quickSort.sort(inputArray);
System.out.println("Sorted Array " + Arrays.toString(inputArray));
)
)

Вихід:

Переваги алгоритмів швидкого сортування

Нижче наведені переваги алгоритму швидкого сортування:

  • Відмінна локальність довідки: Місцевість посилання - це можливість процесора отримувати доступ до одного і того ж місця пам'яті повторно за короткий проміжок часу. Швидкий сорт в java забезпечує чудову локальність посилань через дуже малу кількість пропусків кешу, що в сучасних архітектурах є критичним для продуктивності.
  • Швидке сортування є паралельним: Після завершення початкового кроку розподілу масиву на менші регіони всі окремі підматривки можуть бути сортовані незалежно паралельно. З цієї причини швидкий сорт працює краще.

Аналіз складності швидкого сортування

Quicksort - швидкий та рекурсивний алгоритм, який працює за принципом ділення та перемоги. Ось його аналіз складності в кращому, середньому та найгіршому випадку:

  • Найкраща складність випадку: Якщо масив або список містить n елементів, то для першого запуску знадобиться O (n). Тепер для сортування решти двох підрисів займає 2 * O (n / 2). Це робить висновок про складність O (n logn) у кращому випадку.
  • Середня складність випадків: Середній випадок швидкості вибору O (n log n).
  • Найгірша складність випадку: Вибір першого чи останнього може призвести до найгіршого результату для майже відсортованих або майже реверсованих даних. Швидкий сортування виконує O (n 2) в гіршому випадку.

На Java, масиви. Метод Sort () використовує алгоритм швидкого сортування для сортування масиву.

Рекомендовані статті

Це посібник щодо швидкого сортування алгоритмів на Java. Тут ми обговорюємо кроки щодо впровадження, переваг та складності аналізу алгоритму швидкого сортування в java разом з програмою. Ви також можете переглянути наступні статті, щоб дізнатися більше -

  1. Сортування вставки в Java
  2. цикл do-while на Java
  3. JComponent на Java
  4. Квадрати на Яві
  5. Обмін на PHP
  6. Сортування в C #
  7. Сортування в Python
  8. Алгоритм C ++ | Приклади алгоритму С ++