Eksempler på Golang-sortering

Eksempler Pa Golang Sortering



Sortering er en grundlæggende programmeringsoperation, der inkluderer at sætte elementerne i en bestemt rækkefølge. Sorteringspakken, som Go's officielle bibliotek stiller til rådighed, indeholder flere funktioner til hurtigt at sortere skiverne. Sortering af skiver er en almindelig opgave i mange applikationer, lige fra organisering af data til præsentation til optimering af søgealgoritmerne. Denne artikel udforsker de forskellige sorteringsteknikker og demonstrerer deres brug i Go ved hjælp af sorteringspakken.

Eksempel 1: Golang sorteringsudsnit i stigende rækkefølge

Funktionen 'sort.Slice()' er den forreste funktion i Go, der omarrangerer skivens elementer i stigende eller faldende rækkefølge. Tag hensyn til følgende illustration, hvor skiven er arrangeret i stigende rækkefølge:

pakke vigtigste
importere (
'fmt'
'sortere'
)
func vigtigste () {
lige skive := [] int { 10 , 2 , 8 , 4 , 0 , 6 }
fmt . Udskrivln ( 'Usorteret udsnit:' , lige skive )
sortere . Skive ( lige skive , func ( jeg , j int ) bool {
Vend tilbage lige skive [ jeg ] < lige udsnit [ j ]
})
fmt . Udskrivln ( 'Sorteret udsnit:' , lige skive )
}

I begyndelsen af ​​main()-funktionen definerer vi evenSlice-udsnittet med værdierne {10, 2, 8, 4, 0, 6}. Dette udsnit repræsenterer en samling af lige tal, der oprindeligt er usorterede. For at sortere evenSlice-udsnittet bruges sort.Slice()-funktionen med udsnittet. Inde i sort.Slice()-funktionen er en sorteringsfunktion angivet som et argument. Denne funktion bestemmer sorteringsrækkefølgen ved at sammenligne udsnittets to elementer ved 'i' og 'j' indekser. Hvis evenSlice[i] er mindre end evenSlice[j], returnerer den sand; ellers returnerer den falsk. Sort.Slice()-funktionen bruger denne sammenligningsfunktion til at omarrangere elementerne i 'evenSlice'-udsnittet i stigende rækkefølge.







Resultaterne af det sorterede udsnit i stigende rækkefølge genereres i følgende outputskærm:





Eksempel 2: Golang Sort Part Slice

Derefter anvendes sorteringen på underudsnittet af det angivne udsnit i stigende rækkefølge ved hjælp af funktionen sort.Slice() i Go.





pakke vigtigste
importere (
'fmt'
'sortere'
)
func vigtigste () {
n := [] int { 9 , 7 , 3 , 5 }
Start := 0
ende := 3
sortere . Skive ( n [ Start : ende ], func ( jeg , j int ) bool {
Vend tilbage n [ Start + jeg ] < n [ Start + j ]
})
fmt . Udskrivln ( n )
}

Til at begynde med opretter vi 'n' udsnittet med [9, 7, 3, 5] værdierne. Derudover er to variable, 'start' og 'slut', sat til henholdsvis 0 og 3. Disse variabler definerer rækken af ​​indekser i 'n'-udsnittet, der vil blive sorteret. Funktionen 'sort.Slice()' kaldes derefter med underslicen 'n[start:end]' som det første argument. Dette underudsnit indeholder elementerne 'n' inden for det angivne område. Derefter gives en sorteringsfunktion som det andet argument i sort.Slice()-funktionen.

Her modtager denne funktion to indekser, 'i' og 'j', som repræsenterer elementerne i underudsnittet. For at sammenligne elementerne i underudsnittet får sorteringsfunktionen adgang til de tilsvarende elementer i det oprindelige udsnit ved hjælp af starten offset. Den sammenligner n[start+i] og n[start+j]. Dernæst bruger sort.Slice()-funktionen den medfølgende sorteringsfunktion til at omarrangere elementerne i underudsnittet i stigende rækkefølge.



Følgende output viser, at elementerne inden for det angivne område (start til slut-1) er sorteret, og elementerne uden for området forbliver uændrede:

Eksempel 3: Golang Sort Heltal Udsnit ved hjælp af Sort.Ints() funktionen

Desuden er den mest bekvemme at sortere skiverne af heltal funktionen sort.Ints() uden behov for at implementere de tilpassede sorteringsmetoder. Det virker direkte på heltalsskiver og udfører en på stedet sortering. Følgende program sorterer de angivne heltal:

pakke vigtigste
importere (
'fmt'
'sortere'
)
func vigtigste () {
IntSlice := [] int { 10 , 13 , femten , elleve , 14 , 12 }
fmt . Udskrivln ( 'Usorteret udsnit:' , IntSlice )
sortere . Ints ( IntSlice )
fmt . Udskrivln ( 'Sorteret udsnit:' , IntSlice )
}

Først erklærer og initialiserer vi 'IntSlice'-udsnittet med [10, 13, 15, 11, 14, 12] værdier, som repræsenterer en samling af heltal, der oprindeligt er usorterede. Derefter kaldes sort.Ints()-funktionen med 'IntSlice'-udsnittet som et argument for at sortere 'IntSlice'. Sort.Ints()-funktionen i dette tilfælde sorterer internt hver del af udsnittet i henhold til en optimeret sorteringsalgoritme. Det ændrer det originale udsnit direkte, og omarrangerer dets elementer i en sorteret rækkefølge.

Følgende output viser først, at det usorterede udsnit vises først, efterfulgt af det sorterede udsnit:

Eksempel 4: Golang Sort String Skive

Go tilbyder også sort.Strings()-funktionen af ​​sorteringspakken, som bruges til at sortere et udsnit af strenge i en bestemt rækkefølge. Her hjælper følgende program med at sortere stykket af strenge:

pakke vigtigste
importere (
'fmt'
'sortere'
)
func vigtigste () {
strSl := [] snor { 'golan' , 'python' , 'java' , 'perl' , 'Maskinskrift' }
sortere . Strenge ( strSl )
fmt . Udskrivln ( strSl )
}

Vi etablerede først 'strSl' udsnittet med ['golang', 'python', 'java', 'perl', 'typescript'] værdier, som ikke er sorteret. Derefter sorterer vi 'strSl'-udsnittet med sort.Strings()-funktionen, som sorterer elementerne i udsnittet i leksikografisk rækkefølge. Denne funktion ændrer det originale udsnit direkte og omarrangerer dets elementer i sorteret rækkefølge baseret på deres ASCII-værdier.

Outputtet sorterer strengudsnittet på stigende måde som vist i følgende:

Eksempel 5: Golang Check Sort Slice ved hjælp af IntAreSort()-funktionen

Men med funktionen sort.IntsAreSorted() i Go kan vi kontrollere, om et givet udsnit af heltal er sorteret i stigende rækkefølge eller ej. Overvej følgende eksempelprogram for funktionen IntAreSort() for det givne udsnit:

pakke vigtigste
importere (
'fmt'
'sortere'
)
func vigtigste () {
sl := [] int { - 33 , 105 , - 42 , 59 , 18 , 0 , - 3 }
fmt . Udskrivln ( 'Skiver:' )
fmt . Udskrivln ( 'Usorteret udsnit: ' , sl )
resultat := sortere . IntsAreSorted ( sl )
fmt . Udskrivln ( ' \n Resultat:' )
fmt . Udskrivln ( 'Er givet Slice sorteret?:' , resultat )
}

For det første defineres et usorteret udsnit af tilfældige heltal som 'sl'. Dette udsnit indeholder en samling af heltal i nogen bestemt rækkefølge. Dernæst kalder vi sort.IntsAreSorted()-funktionen og sender 'sl'-udsnittet som et argument. Denne funktion giver et boolesk resultat, der angiver, om udsnitsinputtet er arrangeret i stigende rækkefølge. Derefter udskriver funktionen fmt.Println() resultaterne, som udsender, om det givne udsnit er sorteret eller ej baseret på den returnerede boolske værdi.

Outputtet viser falsk for sorteringsrækkefølgen af ​​et udsnit af heltal, da det er usorteret:

Eksempel 6: Golang omvendt sorteringsskive

Ved at bruge funktionerne sortReverse() og sortStringSlice() fra sorteringspakken i Go, kan vi omvendt sortere et udsnit af strenge. Følgende program demonstrerer funktionen sort.Reverse():

pakke vigtigste
importere (
'fmt'
'sortere'
)
func vigtigste () {
vokalskive := [] snor { 'Det er' , 'en' , 'jeg' , 'i' , 'O' }
fmt . Udskrivln ( 'Før sortering:' , vokalskive )
sortere . Sortere ( sortere . Baglæns ( sortere . StringSlice ( vokalskive )))
fmt . Udskrivln ( 'Efter  sortering :' , vokalskive )
}

Vi begynder med at definere et udsnit af 'vokalSlice'-strengen, der indeholder vokalerne 'e', 'a', 'i', 'u' og 'o'. Det oprindelige indhold af det angivne udsnit af strenge udskrives først ved hjælp af 'print'-funktionen. Dernæst udføres sorteringsoperationen ved hjælp af sort.Sort()-funktionen med sort.Reverse() og sort.StringSlice()-funktionerne som argumenter. Her opretter 'sort.Reverse()' en ny type, der vender om rækkefølgen af ​​elementerne. Den tager typen 'sort.StringSlice' som sit argument, der konverterer vokalSlice til en sorterbar type.

Outputtet her viser vokalerne i omvendt alfabetisk rækkefølge:

Konklusion

Vi dykkede ned i forskellige sorteringsfunktioner med eksempler, der sorterer den medfølgende skive. Vi dækkede også om sortering af underskiver og kontrol af, om en skive allerede er sorteret. Derfor kan vi udnytte sorteringspakkens muligheder til at tackle en lang række sorteringsudfordringer i deres Go-projekter.