Golang Sort Slice-voorbeelden

Golang Sort Slice Voorbeelden



Sorteren is een fundamentele programmeerbewerking waarbij de elementen in een bepaalde volgorde worden geplaatst. Het sorteerpakket, waarin de officiële bibliotheek van Go beschikbaar stelt, bevat verschillende functies om de plakjes snel te sorteren. Segmenten sorteren is een gebruikelijke taak in veel toepassingen, van het organiseren van de gegevens voor presentatie tot het optimaliseren van de zoekalgoritmen. Dit artikel onderzoekt de verschillende sorteertechnieken en demonstreert hun gebruik in Go met behulp van het sorteerpakket.

Voorbeeld 1: Golang Sorteer Slice in oplopende volgorde

De functie 'sort.Slice()' is de belangrijkste functie in Go die de elementen van de slice herschikt in oplopende of aflopende volgorde. Houd rekening met de volgende illustratie waarin het segment in oplopende volgorde is gerangschikt:

pakket voornaamst
importeren (
'fmt'
'soort'
)
func voornaamst () {
zelfsSlice := [] int { 10 , 2 , 8 , 4 , 0 , 6 }
fmt . Println ( 'Ongesorteerd stuk:' , zelfsSlice )
soort . Plak ( zelfsSlice , func ( i , J int ) boel {
opbrengst zelfsSlice [ i ] < evenSlice [ J ]
})
fmt . Println ( 'Gesorteerd stuk:' , zelfsSlice )
}

Aan het begin van de functie main() definiëren we het segment evenSlice met de waarden {10, 2, 8, 4, 0, 6}. Dit segment vertegenwoordigt een verzameling even getallen die aanvankelijk ongesorteerd zijn. Om het evenSlice-segment te sorteren, wordt de sort.Slice()-functie gebruikt met het segment. Binnen de functie sort.Slice() wordt een sorteerfunctie geleverd als argument. Deze functie bepaalt de sorteervolgorde door de twee elementen van het segment te vergelijken op de indexen 'i' en 'j'. Als evenSlice[i] kleiner is dan evenSlice[j], retourneert het true; anders retourneert het false. De functie sort.Slice() gebruikt deze vergelijkingsfunctie om de elementen van het 'evenSlice'-segment in oplopende volgorde te herschikken.







De resultaten van het gesorteerde segment in oplopende volgorde worden gegenereerd in het volgende uitvoerscherm:





Voorbeeld 2: Golang Sort Part Slice

Vervolgens wordt de sortering toegepast op het subsegment van het opgegeven segment in oplopende volgorde met behulp van de functie sort.Slice() in Go.





pakket voornaamst
importeren (
'fmt'
'soort'
)
func voornaamst () {
N := [] int { 9 , 7 , 3 , 5 }
begin := 0
einde := 3
soort . Plak ( N [ begin : einde ], func ( i , J int ) boel {
opbrengst N [ begin + i ] < n [ begin + J ]
})
fmt . Println ( N )
}

Aanvankelijk maken we het 'n' -segment met de [9, 7, 3, 5] -waarden. Bovendien zijn twee variabelen, 'start' en 'end', respectievelijk ingesteld op 0 en 3. Deze variabelen definiëren het bereik van indices in het segment 'n' dat zal worden gesorteerd. De functie 'sort.Slice()' wordt dan aangeroepen met de sub-slice 'n[start:end]' als eerste argument. Deze sub-slice bevat de elementen van 'n' binnen het gespecificeerde bereik. Daarna wordt een sorteerfunctie gegeven als het tweede argument binnen de functie sort.Slice().

Hier ontvangt die functie twee indices, 'i' en 'j', die de elementen binnen de sub-slice vertegenwoordigen. Om de elementen binnen de sub-slice te vergelijken, zoekt de sorteerfunctie naar de overeenkomstige elementen in de originele slice met behulp van de start Het vergelijkt de n[start+i] en n[start+j] Vervolgens gebruikt de functie sort.Slice() de meegeleverde sorteerfunctie om de elementen binnen de subslice in oplopende volgorde te herschikken.



De volgende uitvoer geeft aan dat de elementen binnen het opgegeven bereik (begin tot eind-1) zijn gesorteerd en dat de elementen buiten het bereik ongewijzigd blijven:

Voorbeeld 3: Golang Sort Integer Slice met behulp van de Sort.Ints()-functie

Bovendien is de functie sort.Ints() het gemakkelijkst om de segmenten van gehele getallen te sorteren zonder dat de aangepaste sorteermethoden moeten worden geïmplementeerd. Het werkt rechtstreeks op segmenten met gehele getallen en sorteert ter plekke. Het volgende programma sorteert de opgegeven gehele getallen:

pakket voornaamst
importeren (
'fmt'
'soort'
)
func voornaamst () {
IntSlice := [] int { 10 , 13 , vijftien , elf , 14 , 12 }
fmt . Println ( 'Ongesorteerd stuk:' , IntSlice )
soort . Int ( IntSlice )
fmt . Println ( 'Gesorteerd stuk:' , IntSlice )
}

Eerst declareren en initialiseren we het segment 'IntSlice' met de waarden [10, 13, 15, 11, 14, 12] die een verzameling gehele getallen vertegenwoordigen die aanvankelijk ongesorteerd zijn. Vervolgens wordt de functie sort.Ints() aangeroepen met het 'IntSlice'-segment als argument om het 'IntSlice' te sorteren. De functie sort.Ints() sorteert in dit geval intern elk deel van de slice volgens een geoptimaliseerd sorteeralgoritme. Het wijzigt het oorspronkelijke segment rechtstreeks en herschikt de elementen in een gesorteerde volgorde.

De volgende uitvoer laat zien dat eerst het ongesorteerde segment wordt weergegeven, gevolgd door het gesorteerde segment:

Voorbeeld 4: Golang Sort String Slice

Go biedt ook de functie sort.Strings() van het sort-pakket die wordt gebruikt om een ​​stukje strings in een specifieke volgorde te sorteren. Hier helpt het volgende programma om het stuk strings te sorteren:

pakket voornaamst
importeren (
'fmt'
'soort'
)
func voornaamst () {
strSl := [] snaar { 'golan' , 'Python' , 'Java' , 'perl' , 'typoscript' }
soort . Snaren ( strSl )
fmt . Println ( strSl )
}

We hebben eerst het 'strSl' -segment vastgesteld met de ['golang', 'python', 'java', 'perl', 'typescript'] waarden die niet zijn gesorteerd. Daarna sorteren we het segment 'strSl' met de functie sort.Strings() die de elementen van het segment in lexicografische volgorde sorteert. Deze functie wijzigt het oorspronkelijke segment rechtstreeks en herschikt de elementen in gesorteerde volgorde op basis van hun ASCII-waarden.

De uitvoer sorteert het tekenreekssegment oplopend, zoals hieronder wordt weergegeven:

Voorbeeld 5: Golang Check Sort Slice met behulp van de IntAreSort()-functie

Met de functie sort.IntsAreSorted() van Go kunnen we echter controleren of een bepaald deel van gehele getallen al dan niet in oplopende volgorde is gesorteerd. Beschouw het volgende voorbeeldprogramma van de functie IntAreSort() voor het gegeven segment:

pakket voornaamst
importeren (
'fmt'
'soort'
)
func voornaamst () {
sl := [] int { - 33 , 105 , - 42 , 59 , 18 , 0 , - 3 }
fmt . Println ( 'Plakjes:' )
fmt . Println ( 'Ongesorteerd stuk: ' , sl )
resultaat := soort . IntsAreSorted ( sl )
fmt . Println ( ' \N Resultaat:' )
fmt . Println ( 'Is gegeven Slice gesorteerd?: ' , resultaat )
}

Eerst wordt een ongesorteerd deel van willekeurige gehele getallen gedefinieerd als 'sl'. Deze slice bevat een verzameling gehele getallen in willekeurige volgorde. Vervolgens roepen we de functie sort.IntsAreSorted() aan en geven we het segment 'sl' door als argument. Deze functie geeft een Booleaans resultaat dat aangeeft of de slice-invoer al dan niet in oplopende volgorde is gerangschikt. Vervolgens drukt de functie fmt.Println() de resultaten af ​​die aangeven of het gegeven segment al dan niet is gesorteerd op basis van de geretourneerde Booleaanse waarde.

De uitvoer geeft false weer voor de sorteervolgorde van een deel van gehele getallen omdat het niet gesorteerd is:

Voorbeeld 6: Golang Reverse Sort Slice

Verder kunnen we met behulp van de functies sortReverse() en sortStringSlice() uit het sorteerpakket in Go een segment van strings omgekeerd sorteren. Het volgende programma demonstreert de werking van de sort.Reverse() functie:

pakket voornaamst
importeren (
'fmt'
'soort'
)
func voornaamst () {
klinkerSlice := [] snaar { 'Het is' , 'A' , 'i' , 'in' , 'O' }
fmt . Println ( 'Voor het sorteren :' , klinkerSlice )
soort . Soort ( soort . Achteruit ( soort . StringSlice ( klinkerSlice )))
fmt . Println ( 'Na het sorteren :' , klinkerSlice )
}

We beginnen met het definiëren van een segment van de 'vowelSlice'-reeks die de klinkers 'e', 'a', 'i', 'u' en 'o' bevat. De initiële inhoud van het gespecificeerde stuk strings wordt eerst afgedrukt met behulp van de 'print'-functie. Vervolgens wordt de sorteerbewerking uitgevoerd met behulp van de functie sort.Sort() met de functies sort.Reverse() en sort.StringSlice() als argumenten. Hier creëert de 'sort.Reverse()' een nieuw type dat de volgorde van de elementen omkeert. Het neemt het type 'sort.StringSlice' als argument dat de klinkerSlice converteert naar een sorteerbaar type.

De uitvoer hier toont de klinkers in omgekeerde alfabetische volgorde:

Conclusie

We hebben ons verdiept in verschillende sorteerfuncties met voorbeelden die het verstrekte segment sorteren. We hebben het ook gehad over het sorteren van subsegmenten en het controleren of een segment al is gesorteerd. Daarom kunnen we de mogelijkheden van het sorteerpakket gebruiken om een ​​breed scala aan sorteeruitdagingen in hun Go-projecten aan te pakken.