Golang は非常に人気のあるプログラミング言語であり、その効率的な同時実行性とシンプルな構文により、バックエンドおよびネットワーク プログラミングに非常に適した言語となっています。 Golang では、sort パッケージは、並べ替えを実装するための非常に便利な方法を提供します。配列、スライス、文字列、その他の型を並べ替えることができます。また、非常に完全なカスタム 並べ替えメソッドも提供します。sort パッケージについては、以下で詳しく紹介します。そしてそれを実装します。
sort パッケージの組み込み関数
sort パッケージには 3 つの組み込みソート関数が用意されています。
これら 3 つの組み込み関数の使用方法は次のとおりです:
package main import ( "fmt" "sort" ) func main() { ints := []int{3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5} sort.Ints(ints) fmt.Println(ints) floats := []float64{3.1, 1.4, 4.1, 1.5, 5.9, 2.6, 5.3, 5.5, 3.5} sort.Float64s(floats) fmt.Println(floats) strings := []string{"golang", "is", "an", "awesome", "language"} sort.Strings(strings) fmt.Println(strings) }
出力結果:
[1 1 2 3 3 4 5 5 5 6 9] [1.4 1.5 2.6 3.1 3.5 4.1 5.3 5.5 5.9] [an awesome golang is language]
sort package custom sort
In組み込みに加えて ソート関数に加えて、sort パッケージはソート関数をカスタマイズする非常に便利な方法も提供します。 Golang では、sort.Interface インターフェイスを実装することで、カスタムの並べ替えメソッドを実装できます。 sort.Interface インターフェイスは、次の 3 つのメソッドを実装する必要があります:
type Interface interface { // 返回数据集合的元素数量 Len() int // 比较两个元素的大小,返回是否应该交换位置 Less(i, j int) bool // 交换两个元素的位置 Swap(i, j int) }
sort.Interface インターフェイスを通じてカスタムの並べ替えを実装します。文字列内の文字の出現数に基づいて並べ替える例を次に示します:
package main import ( "fmt" "sort" ) type StringArray []string func (s StringArray) Len() int { return len(s) } // 自定义排序方式:按照字符串中字母出现次数升序排序 func (s StringArray) Less(i, j int) bool { return less(s[i], s[j]) } // 交换两个元素的位置 func (s StringArray) Swap(i, j int) { s[i], s[j] = s[j], s[i] } // 判断字符串 a 是否小于字符串 b func less(a, b string) bool { if len(a) < len(b) { return true } else if len(a) > len(b) { return false } for i := 0; i < len(a); i++ { if a[i] < b[i] { return true } else if a[i] > b[i] { return false } } return false } func main() { strings := StringArray{"banana", "apple", "pear", "pie"} sort.Sort(strings) fmt.Println(strings) }
出力結果:
[pear pie apple banana]
上記の例からわかるように、sort.Interface インターフェイスを介してカスタム ソート メソッドを実装すると、3 つのメソッドを実装するだけで非常に便利です。カスタム並べ替えの場合、2 つの要素のサイズを比較することで、必要な並べ替え方法を実現できます。
sort パッケージ使用上の注意事項
sort パッケージを使用する場合、以下の点に注意する必要があります。 -in ソート パッケージおよびカスタム ソートが提供するソート関数はすべて昇順ですが、降順でソートする必要がある場合は、カスタム ソート関数が必要です。
以上がGolang ソート固有の実装の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。