Sortowanie slice'ów
sort.Slice i funkcje pomocnicze
Sortowanie slice'ów to bezpłatna lekcja Go Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Go Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Go Academy zawiera 4 lekcji w sumie.
Dlaczego sortowanie ma znaczenie
Sortowanie umieszcza elementy w określonej kolejności. Pakiet sort z biblioteki standardowej Go obsługuje to wydajnie.
W Go rzadko pisze się własny algorytm sortowania. Zamiast tego wywołuje się funkcje pomocnicze działające na wycinkach.
Importowanie sort
Aby użyć pakietu, zaimportuj go za pomocą import "sort". Należy on do biblioteki standardowej, więc nie trzeba pobierać żadnych zewnętrznych zależności.
package main
import (
"fmt"
"sort"
)
func main() {
fmt.Println("sort imported")
_ = sort.IntsAreSorted([]int{1, 2, 3})
}Sortowanie liczb całkowitych
sort.Ints sortuje wycinek typu int rosnąco i w miejscu. Oryginalny wycinek zostaje zmodyfikowany.
package main
import (
"fmt"
"sort"
)
func main() {
nums := []int{5, 2, 8, 1, 9}
sort.Ints(nums)
fmt.Println(nums)
}Sortowanie napisów
sort.Strings sortuje wycinek napisów leksykograficznie (alfabetycznie, według kolejności bajtów).
package main
import (
"fmt"
"sort"
)
func main() {
words := []string{"banana", "apple", "cherry"}
sort.Strings(words)
fmt.Println(words)
}Sortowanie liczb zmiennoprzecinkowych
sort.Float64s sortuje wycinek wartości typu float64 rosnąco.
package main
import (
"fmt"
"sort"
)
func main() {
values := []float64{3.2, 1.5, 2.8}
sort.Float64s(values)
fmt.Println(values)
}sort.Slice
sort.Slice sortuje dowolny wycinek za pomocą dostarczonej przez Państwa funkcji less. Funkcja otrzymuje dwa indeksy, i i j, i zwraca true, jeśli element i powinien znajdować się przed elementem j.
package main
import (
"fmt"
"sort"
)
func main() {
nums := []int{5, 2, 8, 1}
sort.Slice(nums, func(i, j int) bool {
return nums[i] < nums[j]
})
fmt.Println(nums)
}Kolejność malejąca
Aby sortować malejąco, odwróć porównanie w funkcji less: zwróć nums[i] > nums[j].
package main
import (
"fmt"
"sort"
)
func main() {
nums := []int{5, 2, 8, 1}
sort.Slice(nums, func(i, j int) bool {
return nums[i] > nums[j]
})
fmt.Println(nums)
}Sortowanie struktur
sort.Slice szczególnie dobrze sprawdza się w przypadku struktur. To Państwo decydują, które pole określa kolejność.
package main
import (
"fmt"
"sort"
)
type Person struct {
Name string
Age int
}
func main() {
people := []Person{{"Bob", 30}, {"Alice", 25}}
sort.Slice(people, func(i, j int) bool {
return people[i].Age < people[j].Age
})
fmt.Println(people)
}Sprawdzanie, czy dane są posortowane
Funkcje pomocnicze, takie jak sort.IntsAreSorted i sort.SliceIsSorted, zwracają true, jeśli wycinek jest już posortowany, nie zmieniając go.
package main
import (
"fmt"
"sort"
)
func main() {
nums := []int{1, 2, 3}
fmt.Println(sort.IntsAreSorted(nums))
}Modyfikacja w miejscu
Wszystkie te funkcje sortują w miejscu. Nie zwracają nowego wycinka. Po wywołaniu sort.Ints(s) sama zmienna s ma zmienioną kolejność elementów.
package main
import (
"fmt"
"sort"
)
func main() {
s := []int{3, 1, 2}
sort.Ints(s)
fmt.Println("s is now:", s)
}Wybór właściwej funkcji pomocniczej
W przypadku prostych wycinków używaj funkcji pomocniczych dla konkretnych typów (sort.Ints, sort.Strings, sort.Float64s). Po sort.Slice sięgaj wtedy, gdy potrzebujesz niestandardowej reguły lub sortujesz struktury.
sort.Ints- liczby całkowite rosnącosort.Slice- dowolne dane, własna reguła
Szybkie sprawdzenie
Co zwraca funkcja less w sort.Slice?
Podsumowanie
Nauczyli się Państwo sortować za pomocą pakietu sort:
sort.Ints,sort.Strings,sort.Float64sdla wycinków określonych typówsort.Slicez funkcją less dla niestandardowych reguł i struktur- Całe sortowanie odbywa się w miejscu
Często zadawane pytania
Czy lekcja „Sortowanie slice'ów” jest bezpłatna?
Tak — pełny tekst „Sortowanie slice'ów” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Go Academy, przejdź na CoddyKit PRO. Kurs Go Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Sortowanie slice'ów”?
sort.Slice i funkcje pomocnicze Ćwiczysz Go Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Go Academy?
Nie wymagamy żadnego doświadczenia. Go Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.
Ile czasu zajmuje lekcja „Sortowanie slice'ów”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Go Academy?
Tak. Każda lekcja Go Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Sortowanie slice'ów
- Niestandardowe porządki sortowania
- Wyszukiwanie posortowanych danych
- Sortowanie stabilne