Ce face slices.IsSorted
slices.IsSorted(x) returnează true dacă fiecare element este mai mic sau egal cu următorul. Un slice gol sau cu un element este considerat sortat.
slices.IsSortedFunc(x, cmp) folosește aceeași funcție de comparare ca SortFunc. O folosești ca să verifici ordinea înainte de o căutare binară sau într-un test, după o sortare.
Parametri
| Parametru | Descriere |
|---|---|
x |
Slice-ul verificat. |
cmp |
Pentru IsSortedFunc: funcția de comparare (negativ, 0, pozitiv). |
Ce returnează
true dacă slice-ul este în ordine, altfel false.
Exemple
Exemplul 1: Verificarea ordinii
package main
import (
"fmt"
"slices"
)
func main() {
fmt.Println(slices.IsSorted([]int{1, 3, 3, 7}))
fmt.Println(slices.IsSorted([]int{1, 7, 3}))
fmt.Println(slices.IsSorted([]string{"Arad", "Cluj", "Iași"}))
fmt.Println(slices.IsSorted([]int{}))
}
Rezultat
true
false
true
true
Exemplul 2: Ordine descrescătoare după un câmp
package main
import (
"cmp"
"fmt"
"slices"
)
type Scor struct {
Nume string
Puncte int
}
func main() {
clasament := []Scor{{"Ana", 95}, {"Mihai", 88}, {"Ioana", 90}}
desc := func(a, b Scor) int { return cmp.Compare(b.Puncte, a.Puncte) }
fmt.Println(slices.IsSortedFunc(clasament, desc))
slices.SortFunc(clasament, desc)
fmt.Println(slices.IsSortedFunc(clasament, desc), clasament)
}
Rezultat
false
true [{Ana 95} {Ioana 90} {Mihai 88}]
Greșeli frecvente
- Verifici ordinea descrescătoare cu
IsSorted: aceasta verifică doar ordinea crescătoare. FoloseșteIsSortedFunccu comparația inversată.
Comenzi înrudite
slices.Sort: Sortează crescător, pe loc, un slice de orice tip ordonat (numere, texte).slices.SortFunc: Sortează un slice după o funcție de comparare care returnează negativ, zero sau pozitiv; SortStableFunc păstrează ordinea celor egali.sort.Ints: Sortează crescător, pe loc, un []int, []string sau []float64; IntsAreSorted verifică dacă un []int este deja sortat.