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 vigtigsteimportere (
'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 vigtigsteimportere (
'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 vigtigsteimportere (
'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 vigtigsteimportere (
'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 vigtigsteimportere (
'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.