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