Un algoritm este prin definiție un set ordonat (Este foarte important) a operațiilor sistematice care ne permite să facem un calcul pentru a găsi soluția tuturor problemelor de același tip. Cu alte cuvinte, este un set de instrucțiuni care urmează întotdeauna următorul model:
- Precizie: Trebuie să explicați în mod unic și fără echivoc fiecare pas sau instrucțiune.
- Finit: Numărul de instrucțiuni de executat trebuie să fie limitat.
- Definiție: Aceleași date de intrare trebuie să furnizeze întotdeauna aceleași informații de ieșire.
- Intrare: Numărul de elemente de intrare poate fi zero sau mai mare.
- Rezoluţie: Ar trebui să producă întotdeauna un rezultat, care vor fi datele de ieșire.
Când un algoritm este implementat într-un anumit limbaj de programare, acesta devine un program care poate fi executat pe un computer, de aceea putem spune că un program este un algoritm sau un set de algoritmi scrise într-un limbaj specific pentru computer. În acest caz, acest program este numit algoritm de calcul. Pe de altă parte, dacă nu are nevoie de un computer pentru a rula, vorbim despre algoritmi necomputaționali.
În cazul nostru vom vorbi despre algoritmi de calcul.
Știind ce este un algoritm, ne vom concentra asupra algoritmilor de sortare, sau ce este același, algoritmul care servește la sortarea și returnarea unei liste care a fost inițial prevăzută cu elemente plasate aleatoriu deja ordonate.
3 algoritmi de sortare cele mai cunoscute sunt Sortare cu bule sau sortare după bule, Sortare selectare sau sortare după selecție și Inserare sortare sau sortare după inserție. Toate acestea sunt considerate algoritmi sau metode simple, deoarece sunt rezolvate prin iterație sau repetare de până la un număr de ori.
1. Sortare cu bule sau sortare după buleLuând ca exemplu o matrice cu patru valori, în acest caz pentru simplitate patru numere vom vedea cum funcționează algoritmul.
Matrice = (4, 7, 8, 5, 9);
Vrem să îl returnați ordonat de la cel mai mare la cel mai mic, de exemplu (9, 8, 7, 5, 4).
Pentru a face acest lucru, primul lucru pe care trebuie să-l facem este să întrebăm primele două valori care este cea mai mare. În cazul în care a doua valoare este mai mare decât prima, așa cum este cazul, acestea ar trebui schimbate, pe de altă parte, dacă sunt deja comandate, le lăsăm așa cum sunt.
Apoi, același proces ar trebui repetat cu a doua și a treia valoare. În acest caz, a treia valoare este mai mare, așa că am schimba-o, lăsând matricea noastră = (7, 8, 4, 5, 9).
Apoi repetăm pasul anterior cu a treia și a patra valoare și le schimbăm din nou. (7, 8, 5, 4, 9).
Și, în sfârșit, după prima iterație ar fi: (7, 8, 5, 9, 4).
Încă nu este ordonat, cu toate acestea s-a realizat că ultimul element, cel din dreapta întregului, cel 4, dacă este ordonat ca cel mai mic număr dintre toate.
În runda următoare pentru a comanda matricea noastră, nu mai este necesar să luăm în considerare ultimul, deoarece știm deja că este ordonat, așa că am compara primul și al doilea element, apoi al doilea și al treilea element, și în cele din urmă al treilea și al patrulea element și matricea ar rămâne: (8, 7, 9, 5, 4).
Acum ultimul și penultimul element sunt sortate.
Mai facem o rundă comparând prima și a doua valoare, apoi a doua și a treia, iar matricea arată astfel: (8, 9, 7, 5, 4).
Ultimele trei elemente sunt deja ordonate, deci este nevoie de încă o rundă pentru a lăsa matricea complet ordonată: (9, 8, 7, 5, 4).
Acesta este modul în care algoritm burburja, care se numește așa pentru că în fiecare rând ultimul element se ridică ca o bulă și este ordonat.
Acum implementat la JavaScript Este foarte simplu:
function bubble (myArray) {var tam = myArray.length; for (var temp = 1; temp <size; temp ++) {for (var left = 0; left <(size - temp); left ++) {var right = left + 1; if (myArray [left] <myArray [right] {sort (myArray, left, right);}}} return myArray;}Trecem o matrice funcției noastre și în cadrul ei primul lucru pe care îl facem este să calculăm dimensiunea acesteia, să calculăm numărul de elemente din matrice.
Apoi creăm o buclă exterioară care trece prin matricea noastră de câte ori elementele au minus una (deoarece sunt timpul necesar pentru ca acesta să fie complet comandat).
Intern creăm o altă buclă care trece prin valori comparând fiecare cu următoarea și dacă cea din stânga este mai mică decât cea din dreapta, le schimbă cu funcția de sortare pe care o vom vedea în continuare.
În cele din urmă returnează matricea comandată.
sortare funcție (matrice mea, valoare1, valoare2) {var temp = matrice mea [valoare1]; myArray [value1] = myArray [value2]; myArray [value2] = temp; return myArray;}unde valoarea 1 este indicele primului articol de schimb și valoarea 2 este indicele celui de-al doilea element de schimb.
2. Sortare selecțieAlgoritmul pe care îl vom vedea mai jos nu mișcă elementele unul câte unul ca în cel cu bule, ci mai întâi trece prin matricea completă și apoi selectează elementul corect pentru plasare în conformitate cu criteriile pe care le urmăm (de exemplu, din cel mai înalt la cel mai mic) și îl plasează direct în poziția sa, și așa își ia numele algoritmul, selectând, luând un element și mutându-l cu o singură mișcare în poziția corectă.
În același exemplu ca înainte Array = (4, 7, 8, 5, 9) dacă dorim să-l comandăm de la cel mai mare la cel mai mic, de exemplu, mai întâi am selecta 9 și l-am pune pe primul loc și 4 ar ocupa ultimul poziția (9, 7, 8, 5, 4). În a doua rundă, el selecta 8 și îl schimbă cu 7 pentru a rămâne în poziția corectă. În rundele următoare nu aș modifica nimic, deoarece a fost deja comandat.
Codul acestui algoritm ar fi după cum urmează:
selectarea funcției (myArray) {var tam = myArray.length; for (var temp = 0; temp <size -1; temp ++) {major = temp; for (var verificare = temp + 1; verificare <dimensiune; verificare ++) {if (myArray [check] <myArray [major] {major = check;}} sort (myArray, major, check);} return myArray;}
Codul funcționează similar cu cel al bulei, dar bucla exterioară pentru trecerea prin valorile de la 0 la N-2 (sunt același număr de pași ca între 1 și N-1 ca în bule, dar operațiunea este diferită ) acționând direct pe elemente pentru a le aduce în fiecare poziție în poziția corectă.
Numărul de rotații necesare pentru toate elementele care urmează să fie comandate este același ca în bula N-1, deoarece după fiecare iterație lăsăm un element plasat în locul său și cel pe care îl putem ignora în următoarele rotații.
Cu toate acestea, modificăm ușor funcția de sortare pentru a ne salva pașii atunci când constatăm că un element este deja ordonat:
funcție sortare (aranjamentul meu, valoare1, valoare2) {if (valoare1 == valoare2) {return myArray; } var temp = myArray [value1]; myArray [value1] = myArray [value2]; myArray [value2] = temp; return myArray;}Pentru a realiza acest lucru, am inclus o buclă if în care verifică dacă valorile se potrivesc, adică dacă acestea sunt deja ordonate.
3. Sortare prin inserțieÎn cele din urmă vom vedea cel mai eficient algoritm din cele trei, deoarece nu vom avea întotdeauna nevoie de iterații N-1 pentru a plasa matricea noastră, așa cum vom vedea mai jos.
Acest algoritm de inserare funcționează similar cu plasarea unei mâini de cărți într-un joc de poker pe măsură ce cărțile sunt distribuite.
De obicei, comandăm cărțile după costume și, în interiorul lor, după ordinea crescătoare a acestora, după cum urmează:
Mai întâi se împarte o carte, un singur element care este ordonat (pentru a fi unic). Atunci când există elemente „j” ordonate de la cel mai mic la cel mai mare, luăm elementul j + 1 și îl comparăm cu toate elementele care sunt deja ordonate. Dacă găsește unul mai mic, deoarece cele mai mari se vor fi deplasat spre dreapta, acest element (j + 1) este inserat, trecând la restul.
introduceți algoritmul tradus în Limbaj JavaScript este după cum urmează:
function insert (myArray) {var tam = myArray.length, temp, place; for (var obj = 0; obj = 0 && myArray [place]> temp; place--) {myArray [place + 1] = myArray [place]; } myArray [loc + 1] = temp; } return myArray;}
Și astfel cei trei algoritmi simpli de ordonare și cod atunci când îl implementați în JavaScript.
V-a plăcut și ați ajutat acest tutorial?Puteți recompensa autorul apăsând acest buton pentru a-i oferi un punct pozitiv