言語-golangの基本的な並べ替えの使用法を行く

ソートパッケージは、挿入ソート(insertionSort)、マージソート(symMerge)、ヒープソート(heapSort)、クイックソート(quickSort)の4つの基本的なソートアルゴリズムを内部で実装しています。ソートパッケージは、実際のデータに基づいて最適なソートアルゴリズムを自動的に選択します。したがって、コードを作成するときは、sort.Interfaceタイプの実装のみを検討する必要があります。

1. [] intと[]文字列を並べ替えます

主パッケージ

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

FUNCメイン(){ 
    // [] INTソート 
    NUMS:= [] INT { 231であり563。}
     // 順序
    ソート.Ints(NUMS)
     FMT。 println(" 1:" 、NUMS)
     // 使用は逆の順序sort.Reverse 
    替え .Sort(ソート .reverse(ソート.IntSlice(NUMS)))
     FMT .Println(:2"NUMS)

     // []ストリング字符串排序 
    名:= [] の文字列 { " ABC " " 12 " " KK " " ジョーダン" " " " DDは" }
     // 顺序
    ソート.Strings(名前)
     fmt .Println(" 3:" 、names)
     // 逆序
    sort .Sort(sort .Reverse(sort 。
    StringSlice(names)))FMT .Printf(" 4:リバース後:%#1 V \ n " 、名前)

    // 查找
     // [0,100)
     // 二分查找 
    NUMS = [] INT { 13579 }
     FMT .Println (" 5:"nums [ sort .SearchInts(nums、8)] == 8 fmt .Println(" 6:"nums [ sort .SearchInts(nums、5)] == 5

} 
/ * 
$ go run sort.go 
1:[2 3 5 6 31] 
2:[31 6 5 3 2] 
3:[12 DD Jordan Ko abc kk] 
4:リバース後:[] string {"kk" 、「abc」、「Ko」、「Jordan」、「DD」、「12」} 
5:false 
6:true 

* /

 

2. sort.Stableを使用して、安定したソートを行います。

sort.Sortは、ソートの安定性を保証しません。必要に応じて、sort.Stableを使用できます。

パッケージメイン

インポート(
    " fmt " 
    " sort " 

タイプperson構造体{ 
    名前文字列
    Age   int 
} 

タイプpersonSlice [] person 

func(s personSlice)Len()int            {return len(s)} 
func(s personSlice)Swap(i、 j int){s [i]、s [j] = s [j]、s [i]} 
func(s personSlice)Less(i、j intbool {return s [i] .Age < s [j] .Age} 

func main(){ 
    a: = personSlice { 
        { 
            名前:"AAA " 
            年齢:   55 
        }、
        { 
            名前:" BBB " 
            年齢:   22 
        }、
        { 
            名前:" CCC " 
            年齢:   0 
        }、
        { 
            名前:" DDD " 
            年齢:   22 
        }、
        { 
            名前:" EEE "
            年齢:   11 
        }、
    } 
    sort .Stable(a)
     fmt .Println(a)

}

結果:

$ go run sort - detail.go 
[{CCC 0 } {EEE 11 } {BBB 22 } {DDD 22 } {AAA 55 }]

 

おすすめ

転載: www.cnblogs.com/malukang/p/12708763.html