Uvod v razvrščanje algoritmov v JavaScript

Podobno kot večina drugih programskih jezikov, lahko tudi vi naletite na scenarije, kjer morate nekatere številke v JavaScript razvrstiti po naraščajočem ali padajočem vrstnem redu. Da bi to naredili, lahko uporabimo številne algoritme, kot so razvrstitev mehurčkov, sortiranje izbire, sortiranje združevanja, Quicksort itd. Ti algoritmi se ne razlikujejo samo po načinu delovanja, ampak imajo tudi različne zahteve glede pomnilnika in potrebnega časa. kopajte globlje v nekatere pomembne algoritme razvrščanja in si oglejte, kako jih lahko uporabite v kodi JavaScript.

Najboljših 6 algoritmov za razvrščanje algoritmov v JavaScript

Tu je nekaj algoritmov za razvrščanje v javascriptu, ki so pojasnjeni spodaj s primeri:

1. Algoritem razvrščanja mehurčkov

Razvrsti kot eno najpogostejših orodij te trgovine, razvrščanje Bubble deluje tako, da ustvari zanko, ki primerja vsak element v matriki z drugim. Če je primerjani izdelek manjši od tistega v roki, zamenjamo njihova mesta. To traja, dokler ne dobimo dovoljenja, kjer noben element v nizu ni večji od elementa, ki je zraven.

Razporeditev mehurčkov ima časovno kompleksnost O (n 2 ) in vesoljsko kompleksnost O (n).

Koda:

function swap(arr, firstIndex, secondIndex)(
var temp = arr(firstIndex);
arr(firstIndex) = arr(secondIndex);
arr(secondIndex) = temp;
)
function bubbleSortAlgo(arraaytest)(
var len = arraaytest.length,
i, j, stop;
for (i=0; i < len; i++)(
for (j=0, stop=len-i; j < stop; j++)(
if (arraaytest(j) > arraaytest(j+1))(
swap(arraaytest, j, j+1);
)
)
)return arraaytest;
)
console.log(bubbleSortAlgo((3, 6, 2, 5, -75, 4, 1)));

Izhod:

2. Algoritem razvrščanja

Zdaj, ko smo končali z razpravljanjem o algoritmu razvrščanja mehurčkov, si oglejmo le kot priljubljen algoritem za razvrščanje, imenovano Selection Sort.

Za razliko od Bubble Sort se osredotočimo na iskanje najmanjše vrednosti v matriki, da bi lahko razvrstili. Tukaj je podrobna razčlenitev, kako deluje Razvrstitvena izbira:

  • Predpostavimo, da je prvi element v nizu najmanjši.
  • Ta element primerjamo z naslednjim elementom v matriki.
  • Če je naslednji element manjši od tistega, ki je trenutno, nastavimo naslednji element kot novo najmanjšo vrednost.
  • Te korake ponavljamo, dokler ne pridemo do konca matrike.
  • Ko v nizu najdemo vrednost, ki je manjša od tiste, s katero smo začeli, zamenjamo njihove pozicije.
  • Nadaljujemo s primerjavami in prehajamo na naslednjo postavko. Dokler se celotni niz ne razvrsti.

Tako kot algoritem za razvrščanje mehurčkov ima sorta izbira časovno kompleksnost O (n 2 ) in vesoljsko kompleksnost O (n).

Koda:

function SelectionSortAlgo(array, compare_Function) (
function comp(a, b) (
return a - b;
)
var min = 0;
var index = 0;
var temp = 0;
compare_Function = compare_Function || compare;
for (var i = 0; i < array.length; i += 1) (
index = i;
min = array(i);
for (var j = i + 1; j < array.length; j += 1) (
if (compare_Function(min, array(j)) > 0) (
min = array(j);
index = j;
)
)
temp = array(i);
array(i) = min;
array(index) = temp;
)
return array;
)
console.log(SelectionSortAlgo((9, 15, 2, 44, -1, 36, 1), function(a, b) ( return a - b; )));

Izhod:

3. Algoritem razvrščanja združevanja

Podobno kot Bubble Sort and Selection Sort, je sorta združevanje eden priljubljenih algoritmov za razvrščanje v računalništvu, izvajate ga lahko v večini programskih jezikov in ima dobre zmogljivosti, ne da bi preveč potrebovali v virih.

Združevanje razvrsti z metodo delitve in osvajanja razvrsti matriko ali kateri koli seznam elementov. Izraz deli in osvaja pomeni, da eno veliko težavo razdelimo na več manjših problemov in potem te majhne težave rešimo. Ko so manjši problemi rešeni, združimo rezultate, ki vodijo v rešitev velikega problema.

Razumevanje algoritma je pravzaprav preprosto:

  • Dano matriko razdelimo na n matrike. Vsak od teh nizov vsebuje samo 1 element.
  • Spojite matrike in ustvarite nov niz.
  • Ponavljajte korak 2, dokler ne ostane samo en niz, ki bo razvrščen niz.

Koda:

function merge_sort_algo(left, right)
(
var i = 0;
var j = 0;
var result = ();
while (i < left.length || j < right.length) (
if (i === left.length) (
// j is the only index left_part
result.push(right(j));
j++;
)
else if (j === right.length || left(i) <= right(j)) (
result.push(left(i));
i++;
) else (
result.push(right(j));
j++;
)
)
return result;
)
console.log(merge_sort_algo((1, 44, 6), (84, 7, 5)));

Izhod:

4. Algoritem hitrega razvrščanja

Quicksort je eden najučinkovitejših načinov razvrščanja elementov v računalniških sistemih. Quicksort deluje na algoritmu delitve in osvajanja, podoben združitvi vrste. V tem najdemo vrtilni element v matriki, da primerjamo vse druge matrike elementov proti, nato pa elemente premaknemo na način, da so vsi predmeti pred našimi izbranimi vrtilnimi elementi manjši in vsi elementi po vrtilnem elementu so večji. Ko smo to storili, je ključno, da to počnemo vedno znova in imeli bomo razvrščen niz.

Sledijo koraki, ki jih je mogoče uporabiti za izvajanje algoritma quicksort:

  • Izberemo element matrike in ga imenujemo "Pivot Point"
  • Začnemo kazalec, imenovan levi kazalec, iz katerega je na prvem elementu matrike.
  • Podobno začnemo kazalec, imenovan desni kazalec, pri zadnjem elementu matrike.
  • Če je vrednost elementa na levem kazalcu manjša v primerjavi z izbrano vrtilno točko, levi kazalec premaknemo levo (dodamo +1) in ga ponavljamo, dokler vrednost levega kazalca ni večja od vrednosti vrednost vrtilne točke ali enaka tej.
  • Če je vrednost elementa na desnem kazalcu na seznamu višja od vrednosti vrtilnega elementa, usmerimo desni kazalec na levo. To ponavljajte, dokler vrednost desnega kazalca ni nižja od (ali enaka) vrednosti vrtišča.
  • Ko je vrednost levega kazalca manjša ali enaka vrednosti desnega kazalca, zamenjajte vrednosti.
  • Desni kazalec premaknite levo za enim, levi kazalec desno za drugim.
  • Ponavljajte, dokler se levi in ​​desni kazalci ne srečajo.

Koda:

function quickSortAlgo(origArray) (
if (origArray.length <= 1) (
return origArray;
) else (
var left = ();
var right = ();
var newArray = ();
var pivot = origArray.pop();
var length = origArray.length;
for (var i = 0; i < length; i++) (
if (origArray(i) <= pivot) (
left.push(origArray(i));
) else (
right.push(origArray(i));
)
)
return newArray.concat(quickSortAlgo(left), pivot, quickSortAlgo(right));
)
)
var myArray = (13, 50, 2, 45, -1, 74, 11 );
var arreySorted = quickSortAlgo(myArray);
console.log(arreySorted);

Izhod:

5. Algoritem razvrščanja vstavka

Ko gre za lažje izvajanje, je vrsta vstavljanja splošno znana kot eden izmed preprostejših algoritmov. V razvrstitvi vstavitve se elementi matrike med seboj primerjajo in nato razporedijo v določenem zaporedju. To je zelo podobno urejanju kart v krovu. Razvrstitev vstavitve imena izvira iz postopka, ko izberete element in ga vstavite na svoje pravilno mesto ter ga nato ponovite za vse elemente.

Tukaj je opisano, kako algoritem deluje:

  • Prvi element matrike velja za že razvrščen.
  • Izberite naslednji element matrike.
  • Primerjajte izbrani element z vsemi elementi v matriki.
  • Prestavite vsak element v matriki, ki je večji od vrednosti izbranega elementa.
  • Vstavite element
  • Ponavljajte korake 2 do 5, dokler se matrika ne razvrsti.

Koda:

function insertion_Sort_algo(arr)
(
for (var i = 1; i < arr.length; i++)
(
if (arr(i) < arr(0))
(
arr.unshift(arr.splice(i, 1)(0));
)
else if (arr(i) > arr(i-1))
(
continue;
)
else (
for (var j = 1; j < i; j++) (
if (arr(i) > arr(j-1) && arr(i) < arr(j))
(
arr.splice(j, 0, arr.splice(i, 1)(0));
)
)
)
)
return arr;
)
console.log(insertion_Sort_algo((44, 20, 26, 54, -9, 41, 16)));

Izhod:

6. Algoritem razvrščanja po kupu

Razvrščanje v kupa je način razvrščanja elementov z uporabo podatkovne strukture »Heap«. Metoda je precej podobna tehniki izbire sortiranja, o kateri smo govorili prej. Zdaj se morda sprašujete o Heapsu in kako so definirane, preden se lotimo algoritma, najprej razumemo skupine.

Na kratko, kup je binarno drevo z nekaj dodanimi pravili. Eno pravilo pravi, da mora biti drevo v celoti, binarno drevo, kar preprosto pomeni, da je treba napolniti vsa vozlišča na trenutni ravni, preden dodate še eno. Naslednje pravilo za kopico je, da mora biti definiran odnos otroka in starša z vrednostmi elementov kopice.

V najmanjši količini mora biti vrednost starša manjša od njegovih otrok. V največji množici, kot ugibate, mora biti vrednost starša večja od njegovega otroka.

Zdaj, ko definicije ne pridejo v poštev, poglejmo, kako deluje množica:

  • Najprej sestavimo največ kopice, ki poskrbi, da je element z najvišjo vrednostjo na vrhu.
  • Zgornji element preklopimo z zadnjim elementom kopice in odstranimo zgornji element iz kopice ter ga shranimo na razvrščeni niz.
  • Nenehno ponavljamo prvi in ​​dva koraka, dokler v kopici ne ostane samo en element.

Ne pozabite, da Heaps v jeziku JavaScript ni izvorno podprt, zato se moramo zatekati pri izvajanju Heapsov s pomočjo nizov. Prostorna zapletenost vrste heap je O (1), ki je odlična in čeprav je glede razumevanja in izvajanja nekoliko bolj zapletena v primerjavi s sortiranjem združevanja ali vstavljanjem, menim, da so prednosti pri uspešnosti, na koncu je bolje uporabiti veliki projekti.

Koda:

var arrLength;
function heapRoot(input, i) (
var left = 2 * i + 1;
var right = 2 * i + 2;
var max = i;
if (left input(max)) (
max = left;
)
if (right input(max)) (
max = right;
)
if (max != i) (
swap(input, i, max);
heapRoot(input, max);
)
)
function swap(input, index_A, index_B) (
var temp = input(index_A);
input(index_A) = input(index_B);
input(index_B) = temp;
)
function heapSortAlgo(input) (
arrLength = input.length;
for (var i = Math.floor(arrLength / 2); i >= 0; i -= 1) (
heapRoot(input, i);
)
for (i = input.length - 1; i > 0; i--) (
swap(input, 0, i);
arrLength--;
heapRoot(input, 0);
)
)
var arr = (12, 10, 22, 55, -8, 64, 14);
heapSortAlgo(arr);
console.log(arr);

Izhod:

Zaključek

Razvrščanje je pomemben del ustvarjanja aplikacij in spletnih mest z JavaScript. Zdaj, ko poznate nekaj najpomembnejših algoritmov, da boste lahko opravili delo, bi se morali v JS razvoju počutiti bolj samozavestno.

Pomembno dejstvo, ki ga morate upoštevati pri različnih razvrščanju, je, da vam res ni treba preveč poudarjati, kateri algoritem morate uporabljati v večini primerov. Zdaj, ko je računalniška strojna oprema tako zmogljiva, sodobni procesorji za telefone in namizja ne bodo prelomili nobenega pomena pri razvrščanju niti na stotine elementov v nekaj milisekundah. Le v primerih, ko ste obtičali s počasno strojno opremo ali v primerih, ko optimizirate vsak posamezen odsek kode, kjer je lahko spreminjanje algoritmov za razvrščanje koristno.

Priporočeni članki

To je vodnik za razvrščanje algoritmov v JavaScript. Tukaj razpravljamo o prvih 6 algoritmih za razvrščanje v javascriptu skupaj s primeri in implementacijo kode. Če želite izvedeti več, si oglejte tudi naslednje članke -

  1. Kompilatorji JavaScript
  2. Obrni v JavaScript
  3. Uvod v JavaScript
  4. Kvadrati na Javi
  5. Hitro razvrščanje algoritmov na Javi
  6. Nizi v strukturi podatkov
  7. C ++ algoritem | Primeri algoritma C ++