0Pricing
Go Academy · Lekcja

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ąco
  • sort.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.Float64s dla wycinków określonych typów
  • sort.Slice z 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

  1. Sortowanie slice'ów
  2. Niestandardowe porządki sortowania
  3. Wyszukiwanie posortowanych danych
  4. Sortowanie stabilne
← Powrót do Go Academy