go語言中常用的功能之七(二維陣列按某列排序)

2021-09-11 01:37:31 字數 1524 閱讀 5652

本文講解切片(陣列)的排序,為什麼是切片,而不是陣列,因為陣列是定長的,且不能改變長度,而切片是可擴充套件長度的,而且切片的傳值排序會直接改變其本身的順序

2. 自定義實現排序

3.二維陣列按某列排序

1.1 數字切片排序

a :=

intsort.

ints

(a)fmt.

println

(a)

列印結果:

[2 3 4 5 7]

1.2 其他型別切片排序

型別函式

intsort.ints(a int)

intsort.float64s(a float64)

intsort.strings(a string)

go提供了乙個sort包,只要每個結構體實現了下面三個方法,既可以直接呼叫sort方法

func

(a type)

len(

)int

func

(a type)

less

(i,j int

)bool

func

(a type)

swap

(i,j int

)

舉個栗子:

type sd struct

type ssd [

]sdfunc

(sd ssd)

len(

)int

func

(sd ssd)

less

(i,j int

)bool

func

(sd ssd)

swap

(i,j int

)func

main()

,,,,

} sort.

sort

(sd)

fmt.

println

(sd)

}

列印結果:

[ ]

按照切片的操作,上面的三個方法,其實有兩個方法是不管什麼樣的結構體都是一樣的,所以sort包又給我們提供了乙個通用的方法sort.slice

type data struct

func

sortbycolumn

(column string

,data [

]data)})

}func

main()

,,,,

,}sortbycolumn

("score"

,data[:]

)for

_,v :=

range data

}

列印結果:

go 宣告二維陣列 Go 語言學習之陣列

概念陣列是具有固定長度,並且有零個或多個相同資料型別元素的序列,陣列長度是陣列型別的一部分,也就是說 3 int 和 4 int 是兩個不同型別的陣列,二者不可以比較,陣列通過索引訪問元素,go 語言內建函式 len 可以返回陣列的長度,在 go 語言中,陣列是值傳遞。02 宣告陣列和初始化 在 g...

C語言中的二維陣列

二維陣列作為形參時退化為指標 void printa char a 3 4 a 代表第0行首位址 a i 等價於 a i 代表第i行首位址 a i 等價於 a i 代表第0行首元素位址 a i j 等價於 a i j 代表第i行第j列元素的位址 a i j 等價於 a i j 代表第i行第j列元素的...

c語言中的二維陣列相關

1 定義二維陣列 型別 陣列名 常量表示式 表示行有多少元素 常量表示式 表示列有多少函式 int a 3 4 3行4列 char a 3 4 3行4列 訪問最後乙個元素 a 2 3 訪問第乙個元素 a 0 0 都是從0開始 2 陣列初始化和列印 二維陣列也可以僅僅對某些元素賦初值。剩下的變為0 想...