Uvod v hitro razvrščanje algoritmov na Javi

Hitro razvrščanje v Javi, znano tudi kot razdelitev izmenjave particij, je algoritem razvrščanja delitev in osvojitev. Hitro razvrščanje je dober primer algoritma, ki najbolje izkorišča predpomnilnike CPU-ja, zaradi svoje delitve in osvajanja narave. Quicksort algoritem je eden najpogosteje uporabljenih algoritmov za razvrščanje, zlasti za razvrščanje velikih seznamov in večina programskih jezikov ga je implementirala. V algoritmu Quicksort so izvirni podatki razdeljeni na dva dela, ki jih posamezno razvrstimo in nato združimo, da dobimo razvrščene podatke.

Upoštevajmo, da je treba matriko (8, 6, 3, 4, 9, 2, 1, 7) razvrstiti s pomočjo hitrega razvrščanja.

Koraki za uvajanje algoritmov za hitro razvrščanje

1. Iz matrike izberite element, imenovan vrtišče. Na splošno je srednji element izbran kot vrtišče. Vzemimo 4 kot vrtišče.

2. Niz razporedite na dva dela, tako da elementi, ki so manjši od vrtička, pridejo pred vrtenje, elementi, večji od vrtička, pa se pokažejo po vrtišču. Sledijo naslednji koraki:

  • Izberite skrajni levi element, tj. 8, Ker je 4 vrtišče in 8 je več kot 4, 8 je treba premakniti v desno od 4, na desni strani pustimo 7, ker je večji od 4 in izberite 1 za zamenjavo z 8 torej po zamenjavi matrike postane: 1, 6, 3, 4, 9, 2, 8, 7
  • Izberite naslednji levi element, tj. 6, Ker je 4 vrtenje in 6 več kot 4, 6 je treba premakniti na desno od 4, na desni strani pustimo 7, 8, ker so večji od 4, in izberite 2 za zamenjavo s 6 torej po zamenjavi matrike postane: 1, 2, 3, 4, 9, 6, 8, 7
  • Ker so vsi elementi na levi strani vrtenja manjši od vrtišča in so vsi elementi desno od vrtička večji od vrtenja, smo s 4 enaki kot vrtenje.

3. Rekurzivno uporabite koraka 1 in 2 za levi podzid (array z elementi, ki so manjši od vrtišča), in za desni podzidrek (matrika z elementi, ki so več kot vrtišče). Če matrika vsebuje samo enega ali nič elementov, se matrika šteje za izbrano.

Program za izvajanje algoritmov za hitro razvrščanje

Tu je java program za razvrščanje niza celih števil z uporabo algoritma za hitro razvrščanje.

Koda:

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

Izhod:

Prednosti algoritmov hitrega razvrščanja

Sledijo prednosti algoritma za hitro razvrščanje:

  • Odlična referenčna lokacija : Referenčna lokalnost je zmožnost procesorja, da do istega pomnilniškega mesta v kratkem časovnem obdobju ponavlja. Hitro razvrščanje v javi zagotavlja odlično lokacijo referenc zaradi zelo majhnega števila manjkajočih predpomnilnikov, kar je v sodobnih arhitekturah ključnega pomena za delovanje.
  • Hitro razvrščanje je vzporedno: Ko je zaključen začetni korak razdelitve matrike na manjša območja, se lahko vse posamezne podravle vzporedno razvrstijo. Zaradi tega je hitro razvrščanje bolje.

Analiza kompleksnosti hitrega razvrščanja

Quicksort je hiter in rekurziven algoritem, ki deluje po principu delitve in osvajanja. Tu je analiza zahtevnosti v najboljšem, povprečnem in najslabšem primeru:

  • Najboljša zapletenost primera: Če matrika ali seznam vsebuje n elementov, bo za prvo izvedbo potreben O (n). Zdaj razvrščanje preostalih dveh podravnov traja 2 * O (n / 2). To zaključuje zapletenost O (n logn) v najboljšem primeru.
  • Povprečna zapletenost primerov: Povprečna velikost quicksort je O (n log n).
  • Najslabša zapletenost primerov: Izbira prvega ali zadnjega bi povzročila najslabši učinek za skoraj razvrščene ali skoraj obratno razvrščene podatke. Hitro razvrščanje izvede O (n 2) v najslabšem primeru.

Na Javi, Arrays. Metoda Sort () uporablja algoritem za hitro razvrščanje matrike.

Priporočeni članki

To je vodnik za hitro razvrščanje algoritmov na Javi. Tukaj razpravljamo o korakih za implementacijo, prednosti in kompleksnost analize algoritma za hitro razvrščanje v javi skupaj s programom. Če želite izvedeti več, si oglejte tudi naslednje članke -

  1. Razvrsti vstavljanje v Javi
  2. zanka do-while v Javi
  3. JComponent v Javi
  4. Kvadrati na Javi
  5. Zamenjava v PHP
  6. Razvrščanje v C #
  7. Razvrščanje v Python-u
  8. C ++ algoritem | Primeri algoritma C ++