0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Go言語(Golang)におけるsort.Sliceについて

Posted at

sort.Slice の基本

sort.Slice は、Goの標準ライブラリ sort パッケージに含まれる関数で、スライスを特定の条件に基づいてソートするために使います。スライスと比較関数を引数に取り、スライスの要素をその条件に従って並べ替えます。

コード

sort.Slice(people, func(i int, j int) bool {
	return people[i].LastName < people[j].LastName
})

1. sort.Slice(people, ...)

  • people: ソート対象のスライスです。この場合、Person 構造体のスライスです。
  • sort.Slice は、people スライスの順序を変更します。

2. func(i int, j int) bool { ... }

  • 比較関数: ソートの基準を定義する無名関数です。
  • 引数 ij: スライス内の要素のインデックスを表します。Goのソートアルゴリズムは、要素のインデックスを2つ取得し、どちらが前に来るべきかを判断します。

3. return people[i].LastName < people[j].LastName

  • 比較ロジック:
    • people[i].LastNamepeople[j].LastName を比較しています。
    • LastName がアルファベット順で i の方が j よりも前に来るべきなら true を返します。
    • 逆に、iLastNamej よりも後に来るべきなら false を返します。

ソートの流れ

  1. 初期状態: sort.Slice は、スライス全体をソートするために、比較関数を何度も呼び出します。
  2. 比較の実行: sort.Slice は、要素の組み合わせ(i, j)を選び、比較関数を呼び出します。
  3. 順序決定: 比較関数が true を返すと、people[i]people[j] の前に来るべきと判断され、順序が調整されます。
  4. 繰り返し: このプロセスがスライス全体に対して行われ、最終的に全ての要素が正しい順序に並べ替えられます。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?