ゴーでソートパッケージを使用します

前書き

コレクションを並べ替えるために私たちを必要とする多くのmanipultionsがあります。ゴーでソートパッケージを使用すると良い選択です、私たちは私たち自身で、多くのハードコードを避けることができます。ないPythonのように、並べ替え、我々が使用している各「リスト」に建てられた方法です。ゴーでは、ソートするために、いくつかの機能的な方法を使用します。そこインターネットdecribe上のいくつかの記事は、使用量があまりにも難しいですが、実際に行くには、私たちが話になるいくつかの簡単なアクセスを提供します。我々が開始する前に一つの簡単なメモは、パッケージ内の機能は、「並べ替え」のみスライスとのインタフェースデータを受け入れます。これは、我々は配列を使用していないことができます。

この記事では、についてお話します。

整数スライス([] int)をソートする方法1.。

フロートスライスをソートする方法2.([]のfloat64)。

3.どのように文字列のスライス([]の文字列)をソートします。 

ソートされたスライスを逆にする方法4

 

整数スライスをソートする方法?

ゴーは、私たちはintergerスライスをソートするために)(関数呼び出しsort.Intsを構築しています。私たちは、他のコードを追加する必要はありません。

我々はsort.Intsを使用する必要があります注意してください()スタンドアロン。この関数は何の戻り値を持っていないし、それが元のスライス内の順序を並べ替えられますので。

メインパッケージ

インポート(
	"FMT" 
	""ソート

メイン(){FUNC 
	:= [] INT {2,5、2,9、0}リスト
	(オリジナルリスト: "リスト)fmt.Println" 
	sort.Ints(リスト)
	fmt.Println( "ソート済みリスト:"、リスト)
} 

//出力
オリジナルリスト:[2 5 2 9 0] 
ソートリスト:[0 2 2 5 9]

私たちは同じことを行うために別のオプションを持っています。型変換機能としての型sort.IntSliceを使用します。つまり、sort.IntSliceです()。

sort.IntSliceの力で、今、私たちは)(.Sortのように、それに接続されている方法では、多くのビルドをアセスすることができます。

我々はsort.IntSliceにスライスを変換した後にのみ、そして、我々はsort.Sort()関数に、それの値を渡すことができます。

この関数は、通常のスライスを受け入れるが、唯一のインタフェースデータを受け付けていません。定義文書とは、次のとおりです。FUNCソート(データインタフェース)。

sort.Stableは())(sort.Sortのような別の関数作品です。今のところ、我々はそれらを区別する必要はありません。

メインパッケージ

のインポート(
	"FMT" 
	"ソート" 

主FUNC(){ 
        //方法.Sort()
	リスト:= [] INT {2,5、2,9、0} 
	sort.IntSlice(リスト).Sort()
	fmt.Println(リスト)
	
        //関数sort.Sort()
	LIST2:= [] INT {2,5、2,9、0} 
	sort.Sort(sort.IntSlice(LIST2))
	fmt.Println(LIST2)
	
	//機能sort.Stable()
	LIST3:= [] INT {2,5、2,9、0} 
	sort.Stable(sort.IntSlice(LIST3))
	fmt.Println(LIST3)
} 

//出力
[0 2 2 5 9 ] 
[0 2 2 5 9] 
[0 2 2 5 9]

 

フロートスライスをソートする方法?

intergerの場合のように、移動は、他のコードなしで、()は私たちを助けるための関数呼び出しsort.Float64sを構築しています。

再び我々はsort.Float64s()スタンドアロンで使用する必要があります。この関数は、同様にノーリターン値を持っていません。

メインパッケージ

のインポート(
	"FMT" 
	"ソート" 

、メイン(){FUNC 
	リスト:= []のfloat64 {2.2、5.1、2、9、0} 
	fmt.Println( "オリジナルリスト:"、リスト)
	sort.Float64s(リスト)
	fmt.Println( "オリジナルリスト:"、リスト)
} 

//出力
オリジナルリスト:[2.2 5.1 2 9 0] 
オリジナルリスト:[0 2 2.2 5.1 9]

同じことを行うには別のオプションは、型変換関数sort.Float64Sliceを使用しています()。

sort.Float64Sliceの力で、我々はよくとして.Sort()methonとsort.Sort()関数を使用することができます。

メインパッケージ

のインポート(
	"FMT" 
	"ソート" 

主FUNC(){ 
	//方法.Sort()
	リスト:= []のfloat64 {2.2、5.1、2、9、0} 
	sort.Float64Slice(リスト).Sort()
	fmt.Println(リスト)
	
	//関数sort.Sort()
	LIST2:= []のfloat64 {2.2、5.1、2、9、0} 
	sort.Sort(sort.Float64Slice(LIST2))
	fmt.Println(LIST2)
	
	//機能sort.Stable()
	LIST3:= []のfloat64 {2.2、5.1、2、9、0} 
	sort.Stable(sort.Float64Slice(LIST3))
	fmt.Println(LIST3)
} 

//出力
[0 2 2.2 5.1 9 ] 
[0 2 2.2 5.1 9] 
[0 2 2.2 5.1 9]

  

どのように文字列のスライスを並べ替えるには?

驚くことではないが、まず私たちは、文字列のスライスをソートする機能sort.Strings()を持っています。

メインパッケージ

のインポート(
	"FMT" 
	"ソート" 

、メイン(){FUNC 
	:= []の文字列{SS B " "Z"、 ""、 "F"、 "G"}" 
	fmt.Println(「元の文字列を:」、SS)
	sort.Strings(SS)
	fmt.Println( "ソート列:"、SS)
} 

//出力
元の文字列:[bzafg] 
ソート列:[abfgz]

第二に、我々はsort.StringSlice、それの方法を持っています。

メインパッケージ

のインポート(
	"FMT" 
	"ソート" 

、メイン(){FUNC 
	//方法.Sort()
	:= []の文字列{SS B " "Z"、 ""、 "F"、 "G"を}" 
	sort.StringSlice(SS).Sort()
	fmt.Println(SS)
	
	//関数sort.Sort()
	SS2:= []ストリング{ "B"、 "Z"、 ""、 "F"、 "G" } 
	sort.Sort(sort.StringSlice(SS2))
	fmt.Println(SS2)
	
	//関数sort.Stable()
	SS3:= []ストリング{ "B"、 "Z"、 ""、 "F"、 " G "} 
	sort.Stable(sort.StringSlice(SS3))
	FMT。	println(SS3) 
} 

//出力
[abfgz] 
[abfgz] 
[abfgz]

 

(減少ソートするか、どのように)ソートされたスライスを逆にするには?  

我々は昇順で(defualtで)スライスをソートした後、アルゴリズム的に言えば、我々は特別に減少スライスを必要としません。

我々は漸減的にそれを作るされ、先頭に終わるからそれを使用することができBecuace。

しかし、いくつかのケースでは、この減少のスライスを持つことは便利になります。

sort.IntSlice / sort.FloatSlice / sort.StringSliceの助けを借りて、我々は機能sort.Reverse()を使用することができます。sort.Sort()はそれを受け入れ、結果が減少ソートされると、この関数は、インタフェースを返します。

ステートメントは、のがここhappendsか見てみましょう、そう単純ではありません。

メインパッケージ

のインポート(
	"FMT" 
	"ソート" 

、メイン(){FUNC 
	= [] INT {2,5、2,9、0}:リスト
	sort.Sort(sort.Reverse(sort.IntSlice(リスト)))
	FMTを.Println(リスト)
} 

//出力
[9 5 2 2 0]

私たちは、あまりにも多くの層がある見ることができます。読みやすさは何とか弱めているが、それは知って良いことです。

 

概要

1.クイックスタート:利用sort.Ints()/ sort.Float64s()/ sort.Strings()。 

2. sort.IntSlice / sort.FloatSlice / sort.StringSlice私たちの使用を拡張することができます。

 

 

 

 

 

 

おすすめ

転載: www.cnblogs.com/drvongoosewing/p/12111606.html