Uvod u brzo sortiranje algoritama na Javi

Brzo sortiranje u Javi također poznato i kao razmjena particija je algoritam sortiranja koji dijeli i osvoji. Brzo sortiranje je dobar primjer algoritma koji na najbolji način koristi predmemorije CPU-a, zbog svoje podjele i osvajanja prirode. Quicksort algoritam jedan je od najčešće korištenih algoritama sortiranja, posebno radi sortiranja velikih popisa i većina programskih jezika ga je implementirala. U algoritmu Quicksort izvorni se podaci dijele na dva dijela koji se pojedinačno sortiraju i spajaju radi dobivanja sortiranih podataka.

Razmotrimo da niz (8, 6, 3, 4, 9, 2, 1, 7) treba razvrstati pomoću brzog sortiranja.

Koraci za primjenu brzih sortiranja algoritama

1. Odaberite niz nazvan stožer iz matrice. Općenito, srednji element odabran je kao stožer. Uzmimo 4 kao stožer.

2. Rasporedite niz u dva dijela tako da elementi manje od stožera dolaze prije osovine, a elementi veći od stožera pojavljuju se nakon okreta. Slijede sljedeći koraci:

  • Odaberite najviši lijevi element, tj. 8, Budući da je 4 okretni zgib, a 8 je više od 4, 8 treba pomaknuti s desne strane od 4, s desne strane ostavljamo 7, jer je veći od 4 i odaberite 1 za zamjenu s 8 stoga nakon izmjene matrice postaje: 1, 6, 3, 4, 9, 2, 8, 7
  • Izaberite sljedeći lijevi element, tj. 6, Budući da je 4 okretni i 6 je veći od 4, 6 treba pomaknuti udesno od 4, s desne strane ostavljamo 7, 8 jer su veći od 4 i odaberite 2 za zamjenu sa 6 stoga nakon zamjene matrice postaje: 1, 2, 3, 4, 9, 6, 8, 7
  • Budući da su svi elementi s lijeve strane stožera manji od stožera i svi elementi s desne strane stožera su veći od stožera, gotovi smo sa 4 kao stožer.

3. Rekurzivno primijenite korake 1 i 2 za lijevu potpolje (niz s elementima manjim od stožišta) i za desni pod-niz (niz s elementima više od stožera). Ako niz sadrži samo jedan ili nula elemenata, tada se niz smatra sortiranim.

Program za implementaciju algoritam za brzo sortiranje

Evo java programa za sortiranje niza cijelih brojeva pomoću algoritma brzog sortiranja.

Kodirati:

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

Izlaz:

Prednosti brzih sortiranja algoritama

Slijede prednosti algoritma za brzo sortiranje:

  • Izvrsna referentna lokacija : Lokalitet reference je mogućnost procesora da pristupi istoj memorijskoj lokaciji ponavljajući kroz kratko vrijeme. Brza vrsta u javi pruža izvrsnu referentnu lokaciju zbog vrlo malog broja pogrešaka predmemorije, što je na modernim arhitekturama kritično za izvedbu.
  • Brzo sortiranje je paralelizirano: Nakon dovršetka početnog koraka particioniranja niza u manja područja, svi pojedinačni nizovi mogu se paralelno sortirati neovisno. Zbog toga je brzo sortiranje bolje.

Analiza složenosti brzog sortiranja

Quicksort je brz i rekurzivan algoritam koji djeluje po principu dijeljenja i osvajanja. Evo njegove analize složenosti u najboljem, prosječnom i najgorem slučaju:

  • Najbolja složenost slučaja: Ako niz ili popis sadrži n elemenata, za prvo pokretanje trebat će O (n). Sada razvrstavanje preostalih dva podračunala uzima 2 * O (n / 2). Ovo zaključuje složenost O (n logn) u najboljem slučaju.
  • Prosječna složenost slučaja: Prosječni slučaj brze vrste je O (n log n).
  • Najgora složenost slučaja: Odabirom prvog ili posljednjeg moglo bi se dogoditi najgore stanje za gotovo sortirane ili gotovo obrnute podatke. Brzo sortiranje izvodi O (n 2) u najgorem slučaju.

Na Javi, Arrays. Metoda Sort () koristi algoritam brzog sortiranja za sortiranje niza.

Preporučeni članci

Ovo je vodič za brzo sortiranje algoritama na Javi. Ovdje smo raspravljali o koracima za implementaciju, prednosti i složenosti brzog algoritma sortiranja u Javi, zajedno s programom. Možete pogledati i sljedeće članke da biste saznali više -

  1. Poredaj umetanja u Javi
  2. do-while petlja na Javi
  3. JComponent u Javi
  4. Kvadrati u Javi
  5. Zamjena u PHP-u
  6. Razvrstavanje u C #
  7. Razvrstavanje u Python
  8. C ++ algoritam | Primjeri C ++ algoritma

Kategorija: