Golang スライスをソートする方法

WBOY
リリース: 2023-05-14 16:34:10
オリジナル
1536 人が閲覧しました

Go 言語では、スライスは参照型です。スライスは、固定サイズの配列への参照と考えることができます。 Go言語ではスライスの長さを変更することができます。プログラミングでよく使われる操作の一つであるソートですが、この記事ではGo言語を使ってスライスをソートする方法を紹介します。

1. ソート パッケージの使用

Go 言語は、スライスのソート操作を含むソート パッケージを提供します。

sort パッケージは主に次の 3 つのソート方法を提供します。

  1. func Sort(data Interface)

データを辞書順にソートします。これは、Interface インターフェイスを実装する必要がある「data」パラメータを受け入れます。

type Interface インターフェース {

// Len方法返回集合中的元素个数
Len() int
// Less方法报告索引i的元素是否比索引j的元素小
Less(i, j int) bool
// Swap方法交换索引i和j的两个元素
Swap(i, j int)
ログイン後にコピー

}

  1. func Ints(a []int)

int 型のスライスを実行します。 。

  1. func Float64s(a []float64)

float64 型のスライスを並べ替えます。

2. スライスの並べ替えの例

次の例では、スライスを並べ替える方法を示します。コードは次のとおりです:

package main

import (

"fmt"
"sort"
ログイン後にコピー
ログイン後にコピー

)

func main() {

//准备一些测试数据
fruits := []string{"peach", "banana", "kiwi"}
sort.Slice(fruits, func(i, j int) bool {
    return fruits[i] < fruits[j]
})
fmt.Println(fruits)
ログイン後にコピー

}

出力結果:

[バナナ キウイ ピーチ]

上記のコードでは、最初に 3 つの果物の名前を含む文字列型のスライスを定義します。 sort.Slice() メソッドを使用してこのスライスを辞書順に並べ替え、結果が画面に出力されます。

他のタイプのスライスを並べ替える場合は、sort.Slice() 関数の最初のパラメーターを対応するスライスに置き換えて、正しい比較関数を指定するだけです。整数型のスライスをソートする例を次に示します。

package main

import (

"fmt"
"sort"
ログイン後にコピー
ログイン後にコピー

)

func main() {

//准备一些测试数据
numbers := []int{5, 2, 6, 3, 1, 4}
sort.Ints(numbers)
fmt.Println(numbers)
ログイン後にコピー

}

出力結果:

[1 2 3 4 5 6]

上記の例では、最初に整数型のスライスを定義します。これには 6 つのスライスが含まれます。価値観。 sort.Ints() メソッドを使用してこのスライスをソートし、結果を画面に出力します。

3. スライス ソートのパフォーマンス

スライス ソートのパフォーマンスはスライス サイズに関係します。小さなスライスの並べ替えは、sort パッケージが提供するメソッドを使用すると非常に高速かつ効率的です。ただし、非常に大きなスライスの場合、並べ替えには大量のメモリと CPU リソースが必要になる場合があります。

非常に大きなスライスをソートする場合、パーティション ソート (クイックソート) やマージ ソート (マージ ソート) など、実行時間の複雑さが O(n log n) のアルゴリズムを使用する必要がある場合があります。これらのアルゴリズムは追加のスペースを必要としますが、実行時間は内部ソート (Insertionsort) よりもはるかに高速です。

4. 概要

この記事では、sort パッケージを使用した golang でのスライスの並べ替えについて紹介します。 Go 言語にはソート パッケージ ツールが用意されており、コード作成プロセス中にスライス ソートを迅速かつ効率的に実行できるため、プログラム効率と開発効率が大幅に向上します。小さなスライスでも非常に大きなスライスでも、対応する並べ替え方法を選択して並べ替えを完了し、プログラミング効率を向上させることができます。

以上がGolang スライスをソートする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!