0Pricing
Go Academy · Aula

Ordenação de slices

Use sort.Slice e auxiliares

Ordenação de slices é uma aula grátis de Go Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Go Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Go Academy inclui 4 aulas no total.

Por que a ordenação é importante

A ordenação coloca os elementos em uma ordem definida. O pacote sort da biblioteca padrão do Go faz isso com eficiência.

Você raramente precisa escrever o seu próprio algoritmo de ordenação em Go. Em vez disso, chame auxiliares que trabalham com fatias.

Importando sort

Para usar o pacote, importe-o com import "sort". Ele faz parte da biblioteca padrão, portanto não é necessário fazer nenhum download externo.

package main

import (
	"fmt"
	"sort"
)

func main() {
	fmt.Println("sort imported")
	_ = sort.IntsAreSorted([]int{1, 2, 3})
}

Ordenando inteiros

sort.Ints ordena uma fatia de int em ordem crescente, no próprio local. A fatia original é modificada.

package main

import (
	"fmt"
	"sort"
)

func main() {
	nums := []int{5, 2, 8, 1, 9}
	sort.Ints(nums)
	fmt.Println(nums)
}

Ordenando cadeias de caracteres

sort.Strings ordena uma fatia de cadeias de caracteres em ordem lexicográfica, ou seja, alfabética e pela ordem dos bytes.

package main

import (
	"fmt"
	"sort"
)

func main() {
	words := []string{"banana", "apple", "cherry"}
	sort.Strings(words)
	fmt.Println(words)
}

Ordenando números de ponto flutuante

sort.Float64s ordena uma fatia de valores float64 em ordem crescente.

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 ordena qualquer fatia usando uma função de comparação fornecida por você. A função recebe dois índices, i e j, e retorna true se o elemento i deve vir antes do elemento 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)
}

Ordem decrescente

Para ordenar em ordem decrescente, inverta a comparação na função de comparação: retorne 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)
}

Ordenando estruturas

sort.Slice é especialmente útil com estruturas. Você decide qual campo determina a ordem.

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)
}

Verificando se está ordenado

Auxiliares como sort.IntsAreSorted e sort.SliceIsSorted retornam true se uma fatia já estiver ordenada, sem alterá-la.

package main

import (
	"fmt"
	"sort"
)

func main() {
	nums := []int{1, 2, 3}
	fmt.Println(sort.IntsAreSorted(nums))
}

Modificação no próprio local

Todas essas funções ordenam no próprio local. Elas não retornam uma nova fatia. Depois de chamar sort.Ints(s), a própria variável s é reordenada.

package main

import (
	"fmt"
	"sort"
)

func main() {
	s := []int{3, 1, 2}
	sort.Ints(s)
	fmt.Println("s is now:", s)
}

Escolhendo o auxiliar certo

Use os auxiliares tipados (sort.Ints, sort.Strings, sort.Float64s) para fatias simples. Use sort.Slice quando precisar de uma regra personalizada ou quiser ordenar estruturas.

  • sort.Ints - inteiros em ordem crescente
  • sort.Slice - qualquer tipo, com a sua regra

Verificação rápida

O que a função de comparação em sort.Slice retorna?

Recapitulação

Você aprendeu a ordenar com o pacote sort:

  • sort.Ints, sort.Strings, sort.Float64s para fatias tipadas
  • sort.Slice com uma função de comparação para regras personalizadas e estruturas
  • Toda a ordenação acontece no próprio local

Perguntas Frequentes

A aula “Ordenação de slices” é grátis?

Sim — o texto completo de “Ordenação de slices” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Go Academy, atualize para CoddyKit PRO. O curso de Go Academy inclui 4 aulas no total.

O que vou aprender em “Ordenação de slices”?

Use sort.Slice e auxiliares Você pratica Go Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Go Academy?

Nenhuma experiência prévia é necessária. Go Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.

Quanto tempo leva a aula “Ordenação de slices”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Go Academy?

Sim. Cada aula de Go Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Ordenação de slices
  2. Ordens de classificação personalizadas
  3. Pesquisa em dados ordenados
  4. Ordenação estável
← Voltar para Go Academy