Fordi matriser er et grunnleggende objekt i Ruby og andre programmeringsspråk, gir Ruby en måte å sortere elementer på uten å skrive en utmerket tilpasset algoritme.
Denne guiden vil lære deg hvordan du sorterer en matrise ved å bruke Rubys innebygde metoder og funksjonaliteter.
Hvordan sortere en matrise
Ruby gir forskjellige måter å sortere en matrise. Sorterings- og sort_by -metodene i Ruby er noe av de mest grunnleggende for å sortere en matrise.
#1: Bruke sorteringsmetoden
Sorteringsmetoden er definert i den enumerbare modulen, og den returnerer verdiene til matrisen sortert.
For eksempel:
Nums = [1,20, 23, 28, 2, 100, 34, 53, 22, 21, 11]Som standard vil metoden returnere elementene i matrisen sortert i stigende rekkefølge.
Det fungerer ved å bruke romskipets operatør, som returnerer 1 hvis en verdi er større enn, 0 for lik og -1 for mindre enn.
Hvis du gir en rekke strenger, vil den sorterte matrisen være i alfabetisk rekkefølge som:
Databaser = %W MySQL, PostgreSql, Redis, Memcached, MongoDB, ElasticsearchDu kan gi en blokk til sorteringsfunksjonen hvis du vil implementere en tilpasset sorteringsrekkefølge. Følgende implementerer for eksempel en omvendt rekkefølge ved hjelp av sorteringsmetoden.
Nums = [1, 2, 11, 20, 21, 22, 23, 28, 34, 53, 100]Ruby lar deg også sortere en matrise på plass ved hjelp av sorteringen! metode. Metoden vil påvirke den opprinnelige metoden i den nye sorterte matrisen som:
Nums = [1, 2, 11, 20, 21, 22, 23, 28, 34, 53, 100]Merk: Bruk sorteringen! metode med forsiktighet; Den overskriver den originale matrisen, som vist i eksemplet over.
#2: sort_by -metoden
Sort_by -metoden gir fleksibilitet når du sorterer sammenlignet med sorteringsmetoden. La oss se på noen få eksempler for å se hvordan sortering ved bruk av sort_by -metoden fungerer.
Det første eksemplet er å sortere etter lengden på en streng.
Databaser = ["Elasticsearch", "Memcached,", "MongoDB,", "MySQL,", "PostgreSql,", "Redis"]Sortering av elementene i matrisen skjer i stigende rekkefølge basert på strenginnholdslengden.
Vi bruker lengden på strengen som sort_by -metoden forventer en numerisk verdi.
Anta at vi vil sortere strengen i omvendt rekkefølge ved hjelp av sort_by -metoden? I et slikt tilfelle kan vi legge til en minusoperatør i lengde, som vist nedenfor:
Databaser = ["Elasticsearch", "Memcached,", "MongoDB,", "MySQL,", "PostgreSql,", "Redis"]Eksemplet ovenfor vil returnere den sorterte matrisen i synkende rekkefølge.
Lukking
Denne guiden har vist deg hvordan du jobber med matriser og sorterer dem ved hjelp av innebygde rubinmetoder.