深入解讀go語言之 排序 sort

2021-10-10 08:11:30 字數 2874 閱讀 7539

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...