Vienkārši JavaScript šķirošanas algoritmi

Satura rādītājs

Algoritms pēc definīcijas ir sakārtota kopa (Tas ir ļoti svarīgi) sistemātisku darbību, kas ļauj mums veikt aprēķinu, lai atrastu visu viena veida problēmu risinājumu. Citiem vārdiem sakot, tas ir instrukciju kopums, kas vienmēr seko šādam paraugam:

  • Precizitāte: Jums ir unikāli un nepārprotami jāpaskaidro katrs solis vai instrukcija.
  • Galīgs: Izpildāmo norādījumu skaitam jābūt ierobežotam.
  • Definīcija: Vieniem un tiem pašiem ievades datiem vienmēr jānodrošina vienāda izejas informācija.
  • Ieeja: Ievades elementu skaits var būt nulle vai vairāk.
  • Izšķirtspēja: Tam vienmēr vajadzētu radīt rezultātu, kas būs izejas dati.

Kad algoritms tiek ieviests noteiktā programmēšanas valodā, tas kļūst par programmu, kuru var izpildīt datorā, tāpēc mēs varam teikt, ka programma ir algoritms vai algoritmu kopums, kas datoram ir rakstīts noteiktā valodā. Šajā gadījumā šo programmu sauc par skaitļošanas algoritmu. No otras puses, ja tā darbināšanai nav nepieciešams dators, mēs runājam par algoritmiem, kas nav aprēķini.

Mūsu gadījumā mēs runāsim par skaitļošanas algoritmi.

Zinot, kas ir algoritms, mēs koncentrēsimies uz šķirošanas algoritmiem vai uz to pašu - algoritmu, kas kalpo, lai kārtotu un atdotu sarakstu, kas sākotnēji tika nodrošināts ar nejauši izvietotiem elementiem, kas jau ir pasūtīti.
3 kārtošanas algoritmi pazīstamākie ir Burbuļu kārtošana vai kārtošana pēc burbuļa, atlases kārtošana vai kārtošana pēc atlases un ievietošanas kārtošana vai kārtošana pēc ievietošanas. Visi no tiem tiek uzskatīti par vienkāršiem algoritmiem vai metodēm, jo ​​tie tiek atrisināti, atkārtojot vai atkārtojot līdz n reizēm.

1. Burbuļu kārtošana vai kārtošana pēc burbuļaPar piemēru ņemot masīvu ar četrām vērtībām, šajā gadījumā vienkāršības labad četri skaitļi redzēsim, kā darbojas algoritms.

Masīvs = (4, 7, 8, 5, 9);

Mēs vēlamies, lai jūs, piemēram, atdotu to pasūtīto no augstākās uz zemāko, tas ir (9, 8, 7, 5, 4).

Lai to izdarītu, pirmā lieta, kas mums jādara, ir pajautāt pirmajām divām lielākajām vērtībām. Gadījumā, ja otrā vērtība ir lielāka par pirmo, kā tas ir, tie ir jāmaina, no otras puses, ja tie jau ir pasūtīti, mēs atstājam tos tādus, kādi tie ir.
Tad tas pats process būtu jāatkārto ar otro un trešo vērtību. Šajā gadījumā trešā vērtība ir lielāka, lai mēs to apmainītu, atstājot mūsu masīvu = (7, 8, 4, 5, 9).
Tad mēs atkārtojam iepriekšējo soli ar trešo un ceturto vērtību, un atkal mēs tos apmaināmies. (7, 8, 5, 4, 9).
Un visbeidzot pēc pirmās atkārtošanas tas būtu: (7, 8, 5, 9, 4).
Tas joprojām nav pasūtīts, tomēr ir panākts, ka pēdējais elements, viens labajā pusē, 4, ja tas ir sakārtots kā mazākais skaitlis no visiem.
Nākamajā kārtā, lai pasūtītu mūsu masīvu, vairs nav jāņem vērā pēdējais, jo mēs jau zinām, ka tas ir pasūtīts, tāpēc mēs salīdzinātu pirmo un otro elementu, pēc tam otro un trešo elementu un, visbeidzot, trešais un ceturtais elements un masīvs paliktu: (8, 7, 9, 5, 4).
Tagad pēdējais un priekšpēdējais elements ir sakārtots.
Mēs veicam vēl vienu kārtu, salīdzinot pirmo un otro vērtību, pēc tam otro un trešo, un masīvs izskatās šādi: (8, 9, 7, 5, 4).
Pēdējie trīs elementi jau ir sakārtoti, tāpēc nepieciešams tikai vēl viens pagrieziens, lai masīvu atstātu pilnībā sakārtotu: (9, 8, 7, 5, 4).

Šādi notiek burburjas algoritms, ko tā sauc, jo katrā pagriezienā pēdējais elements paceļas kā burbulis un tiek pasūtīts.

Tagad ieviests līdz JavaScript Tas ir ļoti vienkārši:

funkciju burbulis (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 [pa kreisi] <myArray [pa labi] {kārtot (myArray, pa kreisi, pa labi);}}} atgriezt myArray;}
Mēs nododam masīvu savai funkcijai, un tajā vispirms mēs aprēķinām tā lielumu, aprēķinām masīva elementu skaitu.
Tad mēs izveidojam ārējo cilpu, kas iet caur mūsu masīvu tik reižu, cik elementiem ir mīnus viens (jo tie ir laiki, kas nepieciešami, lai to pilnībā pasūtītu).
Iekšēji mēs izveidojam citu cilpu, kas iet caur vērtībām, salīdzinot katru no tām ar nākamo, un, ja kreisā puse ir mazāka par labo, tā apmainās ar kārtošanas funkciju, ko redzēsim tālāk.
Visbeidzot, tas atgriež pasūtīto masīvu.
funkciju kārtošana (myArray, value1, value2) {var temp = myArray [vērtība1]; myArray [vērtība1] = myArray [vērtība2]; myArray [vērtība2] = temp; atgriezt myArray;}
kur vērtība1 ir pirmā apmaināmā vienuma indekss un vērtība2 ir otras maināmās preces indekss.

2. Atlases kārtošanaAlgoritms, ko mēs redzēsim zemāk, nepārvieto elementus pa vienam kā burbuli, bet vispirms iziet visu masīvu un pēc tam izvēlas pareizo elementu izvietošanai atbilstoši kritērijiem, kuriem sekojam (piemēram, no augstākā līdz zemākajam) un tas novieto to tieši savā vietā, un šādi algoritms iegūst nosaukumu, atlasot, paņemot elementu un pārvietojot to ar vienu kustību pareizajā vietā.

Tajā pašā piemērā kā iepriekš Masīvs = (4, 7, 8, 5, 9), ja mēs vēlamies to sakārtot, piemēram, no augstākā līdz zemākajam, vispirms mēs atlasītu 9 un ievietotu to pirmajā vietā, un 4 aizņemtu pēdējo pozīcijā (9, 7, 8, 5, 4). Otrajā kārtā viņš izvēlējās 8 un apmainījās ar 7, lai paliktu pareizajā pozīcijā. Turpmākajās kārtās es neko nemainītu, jo tas jau ir pasūtīts.

Šī algoritma kods būtu šāds:

funkciju atlase (myArray) {var tam = myArray.length; for (var temp = 0; temp <size -1; temp ++) {major = temp; for (var check = temp +1; check <size; check ++) {if (myArray [check] <myArray [major] {major = check;}} sort (myArray, major, check);} atgriezt myArray;}

Kods darbojas līdzīgi kā burbulis, bet ārējā cilpa iet caur vērtībām no 0 līdz N-2 (tie ir tikpat soļi kā 1 līdz N-1 kā burbulī, bet darbība ir atšķirīga ), kas darbojas tieši uz elementiem, lai katrā pagriezienā novestu tos pareizajā pozīcijā.
Visu pasūtāmo elementu pagriezienu skaits ir tāds pats kā burbulī N-1, jo pēc katras atkārtošanas mēs atstājam savā vietā novietotu elementu un to, ko mēs varam ignorēt turpmākajos pagriezienos.

Tomēr mēs nedaudz mainām kārtošanas funkciju, lai saglabātu sev soļus, ja konstatējam, ka kāds elements jau ir pasūtīts:

funkcija kārtot (myArray, value1, value2) {if (value1 == value2) {return myArray; } var temp = myArray [vērtība1]; myArray [vērtība1] = myArray [vērtība2]; myArray [vērtība2] = temp; atgriezt myArray;}
Lai to panāktu, mēs esam iekļāvuši cilpu if, kurā tā pārbauda, ​​vai vērtības atbilst, tas ir, vai tās jau ir pasūtītas.

3. Ievietošanas kārtošanaVisbeidzot, mēs redzēsim visefektīvāko algoritmu no trim, jo ​​mums ne vienmēr būs vajadzīgas N-1 iterācijas, lai ievietotu savu masīvu, kā mēs redzēsim zemāk.

Šis ievietošanas algoritms darbojas līdzīgi kā kāršu nodošana pokera spēlē, kad kārtis tiek izdalītas.
Mēs parasti pasūtām kartes pēc kostīmiem un tajās augošā secībā šādi:
Vispirms tiek izdalīta karte - viens atsevišķs elements, kas tiek pasūtīts (lai būtu unikāls). Tad, kad “j” elementi ir sakārtoti no mazākā līdz lielākajam, mēs ņemam elementu j + 1 un salīdzinām to ar visiem jau pasūtītajiem elementiem. Ja tas atrod mazāku, jo lielākie būs nobīdīti pa labi, šis elements (j + 1) tiek ievietots, pārejot uz pārējo.

ievietojiet algoritmu tulkots uz JavaScript valoda ir šāds:

funkciju ieliktnis (myArray) {var tam = myArray.length, temp, place; par (var obj = 0; obj = 0 && myArray [vieta]> temp; vieta-) {myArray [vieta + 1] = myArray [vieta]; } myArray [vieta + 1] = temp; } atgriezt myArray;}

Tādējādi trīs vienkārši pasūtīšanas algoritmi un kodu, ieviešot to JavaScript.

Vai jums patika šī apmācība un palīdzējāt tai?Jūs varat apbalvot autoru, nospiežot šo pogu, lai sniegtu viņam pozitīvu punktu

Jums palīdzēs attīstību vietā, daloties lapu ar draugiem

wave wave wave wave wave