Javascript - funcția de sortare Array, Chief IT

Metoda implicită de sortare sortează matrice în ordine alfabetică, căci el reprezintă fiecare valoare a unui element de matrice ca un șir de caractere folosind metoda toString ().







De exemplu, sortarea matrice constând din numerele:

Pentru a sorta matrice așa cum ne-o dorim, avem nevoie pentru a scrie o funcție specială și să-l dați numele ca un parametru la metoda de sortare.

Dar, înainte de a merge pe pentru a crea o funcție, să ne ia în considerare algoritmul prin care metoda de sortare organizează matrice. De fapt, algoritmul de sortare este foarte simplu și constă în repetarea compararea a două elemente adiacente din matrice, care, în funcție de rezultatul compararea rearanjat (sortate).

Prin urmare, funcția specială trebuie să aibă 2 parametri. Și pentru a transmite valorile acestor parametri va sorta metoda. și anume parametrii nu sunt cunoscute. Și nu este important pentru noi, deoarece Sarcina noastră este de a scrie un algoritm pentru a compara valorile acestor parametri și problema ca urmare a valorilor pe care metoda de sortare va determina rearanja elementele unei matrice sau nu.

Ie Metoda de sortare determină pentru a rearanja elementele sau nu în funcție de rezultatul, care returnează funcția. Luați în considerare ce valori ar trebui să se întoarcă funcția:

  • Dacă funcția returnează 0, șirul de elemente de date sunt egale;
  • Dacă funcția returnează un 1 (sau mai mare decât 0), aceasta înseamnă că primul element este mai mare decât al doilea șir;
  • Dacă funcția returnează -1 (sau mai mică decât 0), aceasta înseamnă că al doilea element de matrice mai mare decât prima.

După ce creați o funcție, este necesar să se treacă ca un parametru la metoda de sortare. Mai mult decât atât, este necesar să se transmită numai numele acestei funcții, fără a încheia-o în ghilimele și fără a rundă skobochek. Acest lucru este din cauza faptului că nu cerem apel metoda de sortare această funcție chiar acum, ci pur și simplu pentru a informa această metodă, deci este să-l folosească atunci când se compară elementele de matrice, de exemplu, cum să substituie funcția standard pentru a sorta matrice în funcția dată să-l ca parametru.







De exemplu, a scrie o funcție pentru sortarea numerelor:

Astfel, prin utilizarea unei funcții speciale, puteți obține metoda de sortare pentru a sorta matrice la funcția specificată în algoritmul.

De exemplu, o matrice numerică de sortare în ordine inversă:

Da, am știut despre, eu, în principiu, și nu a vrut de mult să se îngropa în principiile de sortare rapidă. Doar pentru un motiv oarecare, nu scrie că primul argument este mai mic decât al doilea, care imediat ar elimina un milion de întrebări. Deși, probabil, este atât de înțeles, în caz contrar funcția (n1, n2) (n1-n2) nu ar avea sens)

Nu știu cum se compară, această matrice - 99,23,15,44. El ia compară 23 și 13, returnează 1, apoi se compară, de exemplu, 23 și 44, se întoarce -1, și el înțelege că vreau să, de exemplu, în ordine crescătoare a construi? Nu știu cum va fi primul element mai mare decât al doilea, sau mai mic decât al doilea. Iata o versiune am văzut (a, b) (a returna-b) de tip, ceea ce înseamnă 1 și sortarea în ordine crescătoare. Dar eu nu pot ști dinainte că «o» este mai mică decât «b» și se va întoarce -1. Sau sortare () «o» este întotdeauna mai mic decât «b» (implicit)?

Principiul algoritmului de sortare rapidă este după cum urmează. prim element suport este selectat (de exemplu, scăzut). După aceea, elementele din stânga și din dreapta acestuia sunt comparate cu ea. În cazul în care orice element din stânga peste ratele de referință, sa mutat la dreapta. Aceleași elemente și lulea dreptul său, dar acțiunea este realizată invers. Ie dacă este mai mică decât elementul de referință, acesta este mutat la stânga. În cele din urmă, după ce aceste manipulări vor transforma 2 matrice separate. În prima matrice (în partea stângă a suportului) va fi mai mică decât elementele de referință. O a doua (dreptul de referință) va fi mai mare decât elementele de referință. Apoi, toate acțiunile sunt repetate din nou. Ie luat o matrice din stânga a elementului de referință și se face la fel. Ie definit de către elementul de sprijin, iar celălalt sunt deplasate în raport cu acesta. Toate aceste acțiuni sunt repetate recursiv până când matrice nu este sortat. Ie nu a fost încă bucăți rămân matrice, care nu mai poate diviza. Apoi, totul este conectat, și veți obține o matrice de sortat.

Nu știi principiul algoritmului este suficient să se precizeze condițiile în care un membru este mutat la dreapta și celălalt stânga. În acest scop și au nevoie de o funcție cu doi parametri. În ea trebuie să specificați condițiile în care unele elemente JacaScript se va muta la dreapta (> 1) sau la stânga (<1).
De exemplu: