go sort包排序用法

2021-10-23 01:11:21 字數 2116 閱讀 7450

sort.sort(xxlist)可對資料集進行排序,如果是自定義的某種資料結構,就需要重寫len()、swap()、less()這三個方法實現如下的inte***ce介面:

src/sort/sort.go部分原始碼

// sort sorts data.

// it makes one call to data.len to determine n, and o(n*log(n)) calls to

// data.less and data.swap. the sort is not guaranteed to be stable.

func sort(data inte***ce)

// a type, typically a collection, that satisfies sort.inte***ce can be

// sorted by the routines in this package. the methods require that the

// elements of the collection be enumerated by an integer index.

type inte***ce inte***ce

若直接使用內建的intslice、float64slice、stringslice進行對應型別資料的排序,則不需要重寫這三個方法。

實踐如下:

package main

import (

"fmt"

"sort"

)type fruit struct

type fruitlist fruit

/* 重寫父類len()、swap()、less()三個方法 */

func (list fruitlist) len() int

func (list fruitlist) swap(i, j int)

// 如果index為i的元素小於index為j的元素,則返回true,否則返回false

func (list fruitlist) less(i, j int) bool

func main() ,

, ,

} fmt.println(list)

sort.sort(list)

fmt.println(list)

/* 2,以下使用sort包內建好的intslice、float64slice、stringslice分別進行排序,

sort.go中已經實現了len()、swap()、less()三個方法,因此自己不用再實現直接使用 */

// 對自定義int型別陣列以內建的intslice進行排序

arr := int

intlist := sort.intslice(arr)

fmt.println(intlist)

sort.sort(intlist)

fmt.println(intlist)

// 對自定義的float64型別的陣列以float64slice進行排序

arr1 := float64

float64list := sort.float64slice(arr1)

fmt.println(float64list)

sort.sort(float64list)

fmt.println(float64list)

// 對自定義的string型別的陣列進行排序

strlist := sort.stringslice

fmt.println(strlist)

sort.sort(strlist)

fmt.println(strlist)

}

控制台:

[   ]

[ ]

[2 1 6 5 3]

[1 2 3 5 6]

[3.1415926935 2.101 7.999 5.01]

[2.101 3.1415926935 5.01 7.999]

[bc ac abd]

[abd ac bc]

process finished with exit code 0

模仿 Go Sort 排序介面實現的自定義排序

go 語言對於型別的要求非常嚴格,導致我們無法宣告乙個inte ce型別的切片對其排序。所以這裡模仿 go 的 sort 排序擴充套件包,實現對某個特定型別排序的方法。若要實現乙個自定義的排序,就要實現 sort 包的排序介面。要排序的集合必須包含乙個數字型別的索引,所以待排序的資料型別只能是陣列或...

排序sort 排序用法

語法 array sort fun 引數fun可選。規定排序順序。必須是函式。注 如果呼叫該方法時沒有使用引數,將按字母順序對陣列中的元素進行排序,說得更精確點,是按照字元編碼的順序進行排序。如果想按照其他規則進行排序,就需要提供比較函式,該函式要比較兩個值,然後返回乙個用於說明這兩個值的相對順序的...

DBMS Job包的用法

dbms job包的用法 包含以下子過程 broken 過程。change 過程。interval 過程。isubmit 過程。next date 過程。remove 過程。run 過程。submit 過程。user export 過程。what 過程。1 broken 過程更新乙個已提交的工作的狀...