func
sort
(data inte***ce)
maxdepth *=
2quicksort
(data,
0, n, maxdepth)
}type inte***ce inte***ce
// 內部實現的四種排序演算法
// 插入排序
func
insertionsort
(data inte***ce, a, b int
)// 堆排序
func
heapsort
(data inte***ce, a, b int
)// 快速排序
func
quicksort
(data inte***ce, a, b, maxdepth int
)// 歸併排序
func
symmerge
(data inte***ce, a, m, b int
)
// 首先定義了乙個int型別的別名intslice
type intslice [
]int
// 獲取此 slice 的長度
func
(p intslice)
len(
)int
// 比較兩個元素大小 公升序
func
(p intslice)
less
(i, j int
)bool
// 交換資料
func
(p intslice)
swap
(i, j int
)// sort.ints()內部呼叫sort() 方法實現排序
// 注意 要先將int 轉換為 intslice型別 因為此型別才實現了inte***ce的三個方法
func
ints
(a [
]int
)
package main
import
("sort"
"fmt"
)type person struct
type personslice [
]person
// 這三個方法必須有,相當於實現了sort.inte***ce
func
(s personslice)
len(
)int
func
(s personslice)
swap
(i, j int
)func
(s personslice)
less
(i, j int
)bool
// 這裡是關鍵,我比較了年齡這個字段
func
main()
,,,,
,}sort.
sort
(a) fmt.
println
(a)}
列2(倒序):
package main
import
("fmt"
"sort"
)type person struct
type personslice [
]person
// 這三個方法必須有,相當於實現了sort.inte***ce
func
(s personslice)
len(
)int
func
(s personslice)
swap
(i, j int
)func
(s personslice)
less
(i, j int
)bool
// 這裡是關鍵,我比較了年齡這個字段 //公升序
func
main()
,,,,
,}var or =
make
(map
[int
]int
)//先將將a結構體型別的切片遍歷給 or map中
for b, b2 :=
range a
fmt.
println
("or----------"
,or)
fmt.
println
("len(a)-------"
,len
(a))
//初始化排序的slice,長度就是a的長度
ps :=
make
(personslice,
len(a)
) i:=
0//遍歷 map 將值遍歷給 person結構體中
//以新宣告的變數i為索引值為person 對應的切片為personslice
for k,v :=
range or
i++} fmt.
println
("aaaaaaaaaaaaaaaaaaa"
,a) fmt.
println
("ps---------"
,ps)
//對ps切片進行排序
sort.
sort
(a) fmt.
println
("排序後的a"
,a) sort.
sort
(sort.
reverse
(ps)
) fmt.
println
(ps)
}
深入解讀go語言之 排序:sort Go語言之GO 語言常量
相對於變數,常量是恆定不變的值,多用於定義程式執行期間不會改變的那些值。常量的宣告和變數宣告非常類似,只是把var換成了const,常量在定義的時候必須賦值。const pi 3.1415 const e 2.7182宣告了pi和e這兩個常量之後,在整個程式執行期間它們的值都不能再發生變化了。多個常...
Go語言之Go語言網路程式設計
go語言的 net 包中有乙個 tcpconn 型別,可以用來建立 tcp 客戶端和 tcp 伺服器端間的通訊通道,tcpconn 型別裡有兩個主要的函式 func c tcpconn write b byte n int,err os.error func c tcpconn read b byt...
Go語言之Go 語言迴圈語句
go 語言提供了以下幾種型別迴圈處理語句 迴圈型別 描述for 迴圈 重複執行語句塊 迴圈巢狀 在 for 迴圈中巢狀乙個或多個 for 迴圈 迴圈控制語句可以控制迴圈體內語句的執行過程。go 語言支援以下幾種迴圈控制語句 控制語句 描述break 語句 經常用於中斷當前 for 迴圈或跳出 swi...