Увод у брзо сортирање алгоритама на Јави

Брзо сортирање у Јави такође познато и као размена размена партиција је алгоритам сортирања и подјеле подјеле. Брза сорта је добар пример алгоритма који на најбољи могући начин користи предмеморију ЦПУ-а, због своје поделе и освајања природе. Куицксорт алгоритам је један од најчешће коришћених алгоритама за сортирање, посебно ради сортирања великих листа и већина програмских језика га је имплементирала. У алгоритму Куицксорт оригинални подаци су подељени у два дела која се појединачно сортирају и затим спајају да би се сортирали подаци.

Размотримо да низ (8, 6, 3, 4, 9, 2, 1, 7) треба да се сортира помоћу Куицк Сорт.

Кораци за примену брзих сортирања алгоритама

1. Изаберите елемент зван стожер из поља. У главном, средњи елемент је изабран као стожер. Узмимо 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 за леви потпоље (низ са елементима мањим од стожера) и за десни потпод низ (арраи са елементима више од стожера). Ако низ садржи само један или нула елемената, тада се низ сматра сортираним.

Програм за имплементацију алгоритам за брзо сортирање

Ево јава програма за сортирање низа целих бројева помоћу алгоритма за брзо сортирање.

Шифра:

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));
)
)

Излаз:

Предности брзих сортирања алгоритама

Следе предности алгоритма за брзо сортирање:

  • Одлична локација референце: Локалитет референце је способност процесора да приступи истој меморијској локацији понављајући током кратког временског периода. Брза врста у јави пружа одличну локацију референци због врло малог броја недостатака предмеморије, што је на модерним архитектурама критично за перформансе.
  • Брзо сортирање је паралелизирано : Након што је завршен почетни корак партиционирања низа у мање регионе, сви појединачни низови могу се паралелно сортирати независно. Из тог разлога, брзо сортирање је боље.

Анализа сложености брзог поређења

Куицксорт је брз и рекурзиван алгоритам који ради по принципу дели и освоји. Ево његове анализе сложености у најбољем, просечном и најгорем случају:

  • Најбоља сложеност случаја: Ако низ или листа садрже н елемената, прво покретање ће требати О (н). Сада сортирање преосталих два субрачуна узима 2 * О (н / 2). Овим се закључује сложеност О (н логн) у најбољем случају.
  • Просечна сложеност случаја: Просечан случај брзе сорте је О (н лог н).
  • Најгора сложеност случаја: Одабиром првог или последњег проузроковаће се најгори резултати за готово сортиране или готово обрнуте сортиране податке. Брзо сортирање изводи О (н 2) у најгорем случају.

На Јави, Арраис. Метода Сорт () користи алгоритам брзог сортирања да би сортирао низ.

Препоручени чланци

Ово је водич за брзо сортирање алгоритама на Јави. Овде смо размотрили кораке за имплементацију, предности и сложеност анализе алгоритма брзог сортирања у Јави заједно са програмом. Такође можете погледати следеће чланке да бисте сазнали више -

  1. Поредак уметања у Јави
  2. петља у Јава-у
  3. ЈЦомпонент у Јави
  4. Квадрати у Јави
  5. Замјена у ПХП-у
  6. Сортирање у Ц #
  7. Разврставање у Питхон-у
  8. Ц ++ алгоритам | Примери алгоритма Ц ++

Категорија: