Introducere în sortarea algoritmilor în JavaScript

Similar cu majoritatea altor limbaje de programare, puteți rula în scenarii în care trebuie să sortați câteva numere în JavaScript în ordine crescătoare sau descendentă. Pentru a face acest lucru, putem folosi numeroși algoritmi, precum Bubble sort, Selection Sort, Merge sort, Quicksort, etc. Acești algoritmi nu numai că diferă în modul în care funcționează, ci și fiecare are cerințele sale diferite în ceea ce privește memoria și timpul necesar, haideți săpați mai adânc în unele dintre algoritmele importante de sortare și vedeți cum le puteți utiliza în codul dvs. JavaScript.

Top 6 Sortarea algoritmilor în JavaScript

Iată câteva algoritmi de sortare în javascript explicate mai jos cu exemple:

1. Algoritmul de sortare a bulelor

Considerat a fi unul dintre cele mai comune instrumente ale acestui comerț, sortarea Bubble funcționează prin crearea unei bucle care compară fiecare element din tablă cu un alt element. Dacă articolul comparat este mai mic decât cel de pe mână, le schimbăm locurile. Acest lucru continuă până când avem o trecere în care niciun element din tablă nu este mai mare decât elementul care se află lângă el.

Sortarea cu bule are O (n 2 ) complexitate de timp și O (n) complexitate spațială.

Cod:

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

ieşire:

2. Algoritmul de sortare a selecției

Acum că am terminat de discutat despre algoritmul de sortare a bulelor, să aruncăm o privire doar la un algoritm popular de sortare numit Sortare selecție.

Spre deosebire de Bubble Sort, ne concentrăm pe găsirea celei mai mici valori din tablou pentru a finaliza sortarea. Iată o defalcare pas cu pas a modului în care funcționează Sortarea selecției:

  • Presupunem că primul element din tablou este cel mai mic.
  • Comparam acest articol cu ​​următorul articol din tablou.
  • Dacă următorul articol este mai mic decât cel la îndemână, setăm următorul articol ca pe cea mai mică valoare nouă.
  • Repetăm ​​aceste etape până ajungem la sfârșitul tabloului.
  • Când găsim valoare în tablou care este mai mică decât cea cu care am început, schimbăm pozițiile lor.
  • Facem în continuare comparațiile și trecem la următorul articol. Până la sortarea întregului tablou.

La fel ca algoritmul Sortare cu bule, sortarea Selecției are O (n 2 ) complexitate de timp și O (n) complexitate spațială.

Cod:

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

ieşire:

3. Algoritmul de sortare a îmbinării

Similar cu sortarea de bule și sortarea selecției, sortarea Merge este unul dintre algoritmii de sortare populari în informatică, îl puteți implementa în majoritatea limbajelor de programare și are performanțe bune, fără a fi prea nevoie de resurse.

Merge Sort folosește metoda Divide și cucerire pentru a sorta un tablou sau orice listă de elemente. Termenul divizează și învinge înseamnă că împărțim o problemă mare în mai multe probleme mai mici și apoi rezolvăm aceste mici probleme. Odată rezolvate problemele mai mici, combinăm rezultatele care duc la soluția la marea problemă.

Înțelegerea algoritmului este de fapt simplă:

  • Împărțim matricea dată în n matricile, fiecare dintre aceste tablouri conține doar 1 element.
  • Combinați tablele pentru a produce un nou tablou.
  • Repetați pasul 2 până când rămâne doar 1 tablou, care va fi tabloul sortat.

Cod:

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

ieşire:

4. Algoritmul de sortare rapidă

Quicksort este una dintre cele mai eficiente metode de sortare a elementelor în sistemele de calculator. Similor pentru a îmbina sortul, Quicksort lucrează la algoritmul de împărțire și cucerire. În acest caz, găsim un element pivot din tablou pentru a compara toate celelalte elemente cu matricile și apoi mutăm elementele într-un mod în care toate articolele anterioare articolelor noastre pivot selectate sunt mai mici și toate elementele după elementul pivot au dimensiuni mai mari. După ce am făcut asta, cheia este să continuăm să o facem în mod repetat și vom avea tabloul nostru sortat.

Iată pașii următori pentru implementarea algoritmului quicksort:

  • Selectăm un element al tabloului și îl numim „Pivot Point”
  • Începem un pointer numit pointer stânga din care se află la primul element din tablă.
  • În mod similar, începem un indicator numit indicatorul drept la ultimul element din tablou.
  • Dacă valoarea elementului de la indicatorul din stânga este mai mică comparativ cu punctul de pivot selectat, mutăm indicatorul stâng spre stânga (adăugăm +1 la acesta) și continuăm să îl repetăm ​​până când valoarea de la indicatorul din stânga este considerată mai mare decât valoarea punctului pivot sau egală cu acesta.
  • Dacă valoarea elementului de la indicatorul drept din listă este mai mare decât valoarea elementului pivot, modulăm indicatorul drept spre stânga. Repetați acest lucru până când valoarea din indicatorul din dreapta este mai mică decât (sau egală cu) valoarea pivotului.
  • Când valoarea pointerului din stânga este mai mică sau egală cu valoarea indicelui din dreapta, schimbați valorile.
  • Mutați indicatorul drept la stânga cu unul, indicatorul stânga la dreapta cu unul.
  • Repetați până când indicatoarele din stânga și din dreapta se întâlnesc.

Cod:

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

ieşire:

5. Algoritmul de sortare a inserției

Când vine vorba de ușurința implementării, sortarea de inserție este cunoscută ca unul dintre algoritmii mai simpli. În Sortare Inserare, elementele tabloului sunt comparate între ele și apoi aranjate într-o anumită ordine. Acest lucru este foarte asemănător cu aranjarea cărților într-o punte. Sortarea numelui de inserare provine din procesul de a alege un element și de a-l insera în locul său corect și apoi repetarea lui pentru toate elementele.

Iată cum funcționează algoritmul:

  • Primul element al tabloului este considerat deja sortat.
  • Alegeți următorul element al tabloului.
  • Comparați elementul selectat cu toate elementele din tablou.
  • Mutați fiecare element din tablou care este mai mare decât valoarea elementului selectat.
  • Introduceți elementul
  • Repetați pașii 2 până la 5 până când sortarea tabloului.

Cod:

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

ieşire:

6. Algoritmul de sortare a haldei

Sortarea heap-ului este o modalitate de sortare a elementelor prin utilizarea structurii de date „Heap”. Metoda este destul de similară cu tehnica de sortare a selecției despre care am discutat anterior. Acum este posibil să vă întrebați despre Heaps și cum sunt definite acestea, înainte de a ajunge la algoritm, haideți să înțelegem mai întâi grămadă.

Pe scurt, un morman este un arbore binar cu câteva reguli adăugate. O regulă prevede că, în morman, arborele trebuie să fie un arbore binar complet, ceea ce înseamnă pur și simplu că este necesar să umpleți toate nodurile de la nivelul actual înainte de a adăuga altul. Următoarea regulă pentru haldă este aceea că trebuie să existe o relație definită pentru copii și părinți cu valorile elementului din grup.

Într-un min-heap, valoarea unui părinte trebuie să fie mai mică decât copiii săi. După cum puteți ghici, valoarea unui părinte trebuie să fie mai mare decât copilul său.

Acum, că definițiile sunt în afara drumului, să aruncăm o privire la modul în care funcționează heapsort:

  • Mai întâi construim un morman maxim care ne asigură că elementul cu cea mai mare valoare se află în partea de sus.
  • Schimbăm elementul de sus cu ultimul element al grămei și scoatem elementul superior din grămadă și îl stocăm pe un tablou sortat.
  • Repetăm ​​pasul unu și doi până când rămâne un singur element în grămadă.

Un lucru de reținut este că Heaps-urile nu sunt suportate nativ în JavaScript, de aceea trebuie să recurgem la implementarea Heaps-ului folosind tablouri. Complexitatea spațială a sortării de grămezi este O (1), care este excelent și, deși este un pic mai complicat în comparație cu sortarea sau sortarea de inserție atunci când vine vorba de înțelegere și implementare, cred că pentru beneficii de performanță, în cele din urmă este mai bine să o utilizați în proiecte mari.

Cod:

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

ieşire:

Concluzie

Sortarea este o parte importantă a creării de aplicații și site-uri web cu JavaScript. Acum, că sunteți familiarizați cu unii dintre cei mai importanți algoritmi pentru a finaliza treaba, ar trebui să vă simțiți mai încrezători în JS Development.

Un fapt important de care trebuie să țineți cont de diverse sortări este că nu trebuie să vă stresați prea mult cu privire la ce algoritm să utilizați în majoritatea cazurilor. Acum, că hardware-ul computerului este atât de puternic, procesoarele moderne de telefon și desktop nu vor rupe transpirația în a sorta chiar și sute de elemente în câteva milisecunde. Sunt doar cazuri în care sunteți blocat cu hardware lent sau situații în care optimizați fiecare secțiune de cod în care schimbarea algoritmilor de sortare poate fi benefică.

Articole recomandate

Acesta este un ghid pentru Sortarea algoritmilor în JavaScript. Aici discutăm primii 6 algoritmi de sortare în javascript împreună cu exemple și implementarea codului. De asemenea, puteți consulta următoarele articole pentru a afla mai multe -

  1. Compilatoare JavaScript
  2. Inversează JavaScript
  3. Introducere în JavaScript
  4. Pătrate în Java
  5. Algoritmi de sortare rapidă în Java
  6. Schiri în structura datelor
  7. C ++ Algoritm | Exemple de algoritm C ++