Enkle algoritmer for sortering av JavaScript

Innholdsfortegnelse

En algoritme er per definisjon et ordnet sett (Dette er veldig viktig) av systematiske operasjoner som lar oss gjøre en beregning for å finne løsningen på alle problemer av samme type. Med andre ord er det et sett med instruksjoner som alltid følger følgende mønster:

  • Presisjon: Du må unikt og utvetydig forklare hvert trinn eller instruksjon.
  • Avgrenset: Antall instruksjoner som skal utføres må være begrenset.
  • Definisjon: De samme inndataene må alltid gi den samme utgangsinformasjonen.
  • Inngang: Antall inngangselementer kan være null eller mer.
  • Vedtak: Det bør alltid gi et resultat, som vil være utdataene.

Når en algoritme er implementert i et bestemt programmeringsspråk, blir det et program som kan kjøres på en datamaskin, derfor kan vi si at et program er en algoritme eller et sett med algoritmer skrevet på et bestemt språk som datamaskinen kan bruke. Kan tolke. I dette tilfellet kalles dette programmet en beregningsalgoritme. På den annen side, hvis den ikke trenger en datamaskin for å kjøre, snakker vi om ikke-beregningsmessige algoritmer.

I vårt tilfelle skal vi snakke om beregningsalgoritmer.

Når vi vet hva en algoritme er, skal vi fokusere på sorteringsalgoritmene, eller det som er det samme, algoritmen som tjener til å sortere og returnere en liste som i utgangspunktet er utstyrt med tilfeldig plasserte elementer som allerede er bestilt.
De 3 sorteringsalgoritmer mest kjente er Boblesortering eller sortering etter boble, Utvalgssortering eller sortering etter utvalg og Innsettingssortering eller sortering etter innsetting. Alle regnes som enkle algoritmer eller metoder siden de løses ved iterasjon eller gjentakelse opptil et antall n ganger.

1. Boblesorter eller sorter etter bobleSom et eksempel på en matrise med fire verdier, i dette tilfellet for enkelhets skyld vil vi se hvordan algoritmen fungerer.

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

Vi vil at du skal returnere den bestilt fra høyeste til laveste for eksempel, det vil si (9, 8, 7, 5, 4).

For å gjøre dette, er det første vi må gjøre å spørre de to første verdiene som er den største. I tilfelle den andre verdien er større enn den første, som tilfellet er, bør de byttes derimot, hvis de allerede er bestilt, lar vi dem være som de er.
Da må den samme prosessen gjentas med andre og tredje verdi. I dette tilfellet er den tredje verdien større, så vi vil bytte den og forlate matrisen = (7, 8, 4, 5, 9).
Deretter gjentar vi det forrige trinnet med den tredje og fjerde verdien, og igjen bytter vi dem. (7, 8, 5, 4, 9).
Og til slutt etter den første iterasjonen ville det være: (7, 8, 5, 9, 4).
Det er fremdeles ikke bestilt, men det er oppnådd at det siste elementet, det til høyre for helheten, 4, hvis det er bestilt som det minste antallet av alle.
I neste runde for å bestille vårt utvalg, er det ikke lenger nødvendig å ta det siste i betraktning fordi vi allerede vet at det er bestilt, så vi vil sammenligne det første og andre elementet, deretter det andre og tredje elementet, og til slutt tredje og fjerde element og matrisen vil forbli: (8, 7, 9, 5, 4).
Nå er det siste og nest siste elementet sortert.
Vi gjør en ny runde med å sammenligne de første og andre verdiene, og deretter den andre og tredje, og matrisen ser slik ut: (8, 9, 7, 5, 4).
De tre siste elementene er allerede bestilt, så det tar bare en omgang til for å la matrisen være fullstendig ordnet: (9, 8, 7, 5, 4).

Slik er burburja algoritme, som er såkalt fordi det siste elementet i hver sving stiger som en boble og blir ordnet.

Nå implementert til JavaScript Det er veldig enkelt:

funksjonsboble (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øyre] {sort (myArray, venstre, høyre);}}} returner myArray;}
Vi sender en matrise til funksjonen vår, og det første vi gjør er å beregne størrelsen, beregne antall elementer i matrisen.
Deretter lager vi en ytre sløyfe som går gjennom matrisen vår så mange ganger som elementene har minus en (siden det er tidene som er nødvendige for at det skal være fullstendig bestilt).
Internt lager vi en annen sløyfe som går gjennom verdiene som sammenligner hver med den neste, og hvis den til venstre er mindre enn den til høyre, bytter den dem med sorteringsfunksjonen som vi vil se neste.
Til slutt returnerer den den bestilte matrisen.
funksjonssort (myArray, verdi1, verdi2) {var temp = myArray [verdi1]; myArray [verdi1] = myArray [verdi2]; myArray [verdi2] = temp; returner myArray;}
hvor verdi1 er indeksen til den første varen som skal byttes og verdi2 er indeksen til den andre varen som skal byttes.

2. UtvalgssorteringAlgoritmen som vi vil se nedenfor, flytter ikke elementene ett etter ett som i boblen, men går først gjennom hele matrisen og velger deretter det riktige elementet for plassering i henhold til kriteriene vi følger (for eksempel fra høyeste til laveste) og den plasserer den direkte i sin posisjon, og dette er hvordan algoritmen får navnet sitt, velger, tar et element og flytter det med en enkelt bevegelse til riktig posisjon.

I samme eksempel som før Array = (4, 7, 8, 5, 9) hvis vi vil bestille det fra høyeste til laveste for eksempel, først ville vi velge 9 og satt det i første omgang og 4 ville okkupere det siste posisjon (9, 7, 8, 5, 4). I den andre runden ville han velge 8 og bytte den med 7 for å holde seg i riktig posisjon. I de følgende rundene ville jeg ikke endre noe siden det allerede er bestilt.

Koden til denne algoritmen vil være som følger:

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

Koden fungerer på samme måte som boblen, men den ytre for sløyfen går gjennom verdiene fra 0 til N-2 (de er samme antall trinn som mellom 1 og N-1 som i boblen, men operasjonen er annerledes ) opererer direkte på elementene for å bringe dem til riktig posisjon ved hver sving.
Antallet omdreininger som er nødvendige for at alle elementene skal bestilles er det samme som i N-1-boblen, siden vi etter hver iterasjon forlater et element plassert på plass og det som vi kan ignorere i de følgende svingene.

Vi endrer imidlertid sorteringsfunksjonen litt for å spare trinnene når vi finner ut at et element allerede er bestilt:

funksjonssort (myArray, verdi1, verdi2) {if (verdi1 == verdi2) {return myArray; } var temp = myArray [verdi1]; myArray [verdi1] = myArray [verdi2]; myArray [verdi2] = temp; returner myArray;}
For å oppnå dette har vi inkludert en if -sløyfe der den sjekker om verdiene samsvarer, det vil si om de allerede er bestilt.

3. InnsettingssorteringTil slutt vil vi se den mest effektive algoritmen av de tre siden vi ikke alltid trenger N-1 iterasjoner for å plassere matrisen vår, som vi vil se nedenfor.

Denne innsettingsalgoritmen fungerer på samme måte som å plassere en hånd med kort i et pokerspill etter hvert som kortene deles ut.
Vi bestiller vanligvis kortene etter dresser, og innenfor dem etter deres stigende rekkefølge som følger:
Først deles det ut et kort, et enkelt element som er bestilt (for å være unikt). Når det er “j” -elementer ordnet fra minst til størst, tar vi elementet j + 1 og sammenligner det med alle elementene som allerede er bestilt. Hvis den finner en mindre, siden de større vil ha forskjøvet seg til høyre, settes dette elementet (j + 1) inn og skiftes til resten.

De sette inn algoritme oversatt til JavaScript -språk er som følgende:

funksjonsinnsats (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 ordningsalgoritmene og kode når du implementerer den i JavaScript.

Likte og hjalp du denne opplæringen?Du kan belønne forfatteren ved å trykke på denne knappen for å gi ham et positivt poeng

Du vil bidra til utvikling av området, dele siden med vennene dine

wave wave wave wave wave