Enkle JavaScript -sorteringsalgoritmer

Indholdsfortegnelse

En algoritme er pr. Definition et ordnet sæt (Dette er meget vigtigt) af systematiske operationer, der giver os mulighed for at foretage en beregning for at finde løsningen på alle problemer af samme type. Med andre ord er det et sæt instruktioner, der altid følger følgende mønster:

  • Præcision: Du skal entydigt og utvetydigt forklare hvert trin eller instruktion.
  • Begrænset: Antallet af instruktioner, der skal udføres, skal begrænses.
  • Definition: De samme inputdata skal altid give de samme outputoplysninger.
  • Indgang: Antallet af inputelementer kan være nul eller mere.
  • Løsning: Det skal altid producere et resultat, som vil være outputdata (erne).

Når en algoritme er implementeret i et bestemt programmeringssprog, bliver det til et program, der kan eksekveres på en computer, derfor kan vi sige, at et program er en algoritme eller et sæt algoritmer skrevet på et bestemt sprog, computeren kan bruge. Kan fortolke. I dette tilfælde kaldes dette program en beregningsalgoritme. På den anden side, hvis det ikke har brug for en computer til at køre, taler vi om ikke-beregningsmæssige algoritmer.

I vores tilfælde vil vi tale om beregningsmæssige algoritmer.

Ved at vide, hvad en algoritme er, vil vi fokusere på sorteringsalgoritmerne, eller hvad der er det samme, algoritmen, der tjener til at sortere og returnere en liste, der oprindeligt er forsynet med tilfældigt placerede elementer, der allerede er bestilt.
Det 3 sorteringsalgoritmer bedst kendte er Boblesortering eller sortering efter boble, Valgssortering eller sortering efter markering og Indsættelsessortering eller sortering efter indsættelse. Alle betragtes som simple algoritmer eller metoder, da de løses ved iteration eller gentagelse op til et antal n gange.

1. Boblesorter eller sorter efter bobleSom et eksempel på en matrix med fire værdier, i dette tilfælde for enkelheds skyld fire tal, vil vi se, hvordan algoritmen fungerer.

Array = (4, 7, 8, 5, 9);

Vi vil have dig til at returnere den bestilt fra højeste til laveste for eksempel, det vil sige (9, 8, 7, 5, 4).

For at gøre dette er det første, vi skal gøre, at spørge de to første værdier, som er den største. I tilfælde af at den anden værdi er større end den første, som det er tilfældet, bør de udveksles, på den anden side, hvis de allerede er bestilt, lader vi dem være som de er.
Så skulle den samme proces gentages med den anden og tredje værdi. I dette tilfælde er den tredje værdi større, så vi ville udveksle den og efterlade vores array = (7, 8, 4, 5, 9).
Derefter gentager vi det foregående trin med den tredje og fjerde værdi, og igen udveksler vi dem. (7, 8, 5, 4, 9).
Og endelig efter den første iteration ville det være: (7, 8, 5, 9, 4).
Det er stadig ikke bestilt, men det er opnået, at det sidste element, det til højre for helheden, de 4, hvis det er bestilt som det mindste antal af alle.
I den næste runde for at bestille vores array er det ikke længere nødvendigt at tage det sidste i betragtning, fordi vi allerede ved, at det er bestilt, så vi vil sammenligne det første og andet element, derefter det andet og tredje element, og til sidst tredje og fjerde element og arrayet ville forblive: (8, 7, 9, 5, 4).
Nu er det sidste og næstsidste element sorteret.
Vi laver en anden runde, hvor vi sammenligner den første og anden værdi, og derefter den anden og tredje, og arrayet ser sådan ud: (8, 9, 7, 5, 4).
De sidste tre elementer er allerede bestilt, så det tager kun en omgang mere for at lade arrayet være fuldstændigt ordnet: (9, 8, 7, 5, 4).

Sådan er burburja algoritme, som er såkaldt, fordi det sidste element i hver tur stiger som en boble og er ordnet.

Nu implementeret til JavaScript Det er meget enkelt:

funktionsboble (myArray) {var tam = myArray.length; for (var temp = 1; temp <size; temp ++) {for (var left = 0; left <(size - temp); left ++) {var right = left +1; hvis (myArray [venstre] <myArray [højre] {sort (myArray, venstre, højre);}}} returner myArray;}
Vi sender et array til vores funktion, og inden for det er det første, vi gør, at beregne dets størrelse, beregne antallet af elementer i arrayet.
Derefter opretter vi en ydre sløjfe, der går gennem vores array, så mange gange som elementer har minus en (da det er de nødvendige tidspunkter for at det kan bestilles fuldstændigt).
Internt opretter vi en anden sløjfe, der går igennem værdierne, der sammenligner hver enkelt med den næste, og hvis den til venstre er mindre end den til højre, udveksler den dem med den sorteringsfunktion, som vi vil se næste.
Endelig returnerer den det bestilte array.
funktionssort (myArray, værdi1, værdi2) {var temp = myArray [værdi1]; myArray [værdi1] = myArray [værdi2]; myArray [værdi2] = temp; returner myArray;}
hvor værdi1 er indekset for det første element, der skal udveksles, og værdi2 er indekset for det andet element, der skal udveksles.

2. UdvælgelsessortDen algoritme, som vi vil se nedenfor, flytter ikke elementerne en efter en som i boblen, men går først gennem hele arrayet og vælger derefter det korrekte element til placering i henhold til de kriterier, vi følger (f.eks. Fra højeste til laveste), og den placerer den direkte i sin position, og sådan får algoritmen sit navn, vælger, tager et element og flytter det med en enkelt bevægelse til sin korrekte position.

I det samme eksempel som før Array = (4, 7, 8, 5, 9) hvis vi for eksempel vil bestille det fra højeste til laveste, først ville vi vælge 9 og sætte det i første omgang og 4 ville indtage det sidste position (9, 7, 8, 5, 4). I anden runde ville han vælge 8 og bytte den med 7 for at blive i den korrekte position. I de følgende runder ville jeg ikke ændre noget, da det allerede er bestilt.

Koden for denne algoritme ville være som følger:

funktionsvalg (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);} returner myArray;}

Koden fungerer på samme måde som boblens, men den ydre for loop går gennem værdierne fra 0 til N-2 (de er det samme antal trin som mellem 1 og N-1 som i boblen, men operationen er anderledes ) opererer direkte på elementerne for at bringe dem til den korrekte position ved hver sving.
Antallet af omdrejninger, der er nødvendige for alle de elementer, der skal bestilles, er det samme som i N-1-boblen, da vi efter hver iteration efterlader et element placeret på dets sted, og det, som vi kan ignorere i de følgende svingninger.

Vi ændrer dog sorteringsfunktionen lidt for at spare trinene, når vi finder ud af, at et element allerede er bestilt:

funktionssort (myArray, value1, value2) {if (value1 == value2) {return myArray; } var temp = myArray [værdi1]; myArray [værdi1] = myArray [værdi2]; myArray [værdi2] = temp; returner myArray;}
For at opnå dette har vi inkluderet en if -loop, hvor den kontrollerer, om værdierne matcher, det vil sige, om de allerede er bestilt.

3. IndsætningssorteringEndelig vil vi se den mest effektive algoritme af de tre, da vi ikke altid har brug for N-1 iterationer for at placere vores array, som vi vil se nedenfor.

Denne indsættelsesalgoritme fungerer på samme måde som at placere en hånd med kort i et pokerspil, når kortene deles ud.
Vi bestiller normalt kortene efter dragter og inden for dem i deres stigende rækkefølge som følger:
Først deles et kort ud, et enkelt element som bestilles (for at være unikt). Når der er “j” -elementer, der er ordnet fra mindst til størst, tager vi elementet j + 1 og sammenligner det med alle de elementer, der allerede er bestilt. Hvis den finder en mindre, da de større vil have flyttet sig til højre, indsættes dette element (j + 1) og skifter til resten.

Det indsæt algoritme oversat til JavaScript -sprog er som følgende:

funktionsindsats (myArray) {var tam = myArray.length, temp, place; for (var obj = 0; obj = 0 && myArray [place]> temp; place--) {myArray [place + 1] = myArray [place]; } myArray [sted + 1] = temp; } returner myArray;}

Og dermed de tre enkle ordningsalgoritmer og kode, når den implementeres i JavaScript.

Kan du lide og hjælpe denne vejledning?Du kan belønne forfatteren ved at trykke på denne knap for at give ham et positivt punkt
wave wave wave wave wave