演算法golang篇

2022-09-17 08:45:10 字數 1069 閱讀 1809

1.slice反轉,偏移

func reverse(s int

) }

一種將slice元素迴圈向左旋轉n個元素的方法是三次呼叫reverse反轉函式,第一次是反轉開頭 的n個元素,然後是反轉剩下的元素,最後是反轉整個slice的元素。(如果是向右迴圈旋轉, 則將第三個函式呼叫移到第乙個呼叫位置就可以了。)

a := [...]int

//rotate a left by two positions.

reverse(a[:2

])reverse(a[

2:])

reverse(a[:])

//output [2 3 4 5 0 1]

type tree struct

func sort(values

int)

0], root)

}int, node *tree) int

return

values

}func add(node *tree, val int) *tree

if node.value >val

else

return

node

}

func fib(x int) int

return fib(x-1) + fib(x-2

)}

func fib2(x int) int 

return

c}

如果我們有乙個指向結構體的指標p,那麼可以通過(*p).x來訪問其欄位x。不過這麼寫太囉嗦了,所以語言也允許我們使用隱式間接引用,直接寫p.x就可以。

計算兩個整數值的的最大公約數(gcd)(greatest common divisor的縮寫,歐幾里德的gcd是最早的非平凡演算法):

func gcd(x, y int) int

return

x}

Golang程式設計基礎 準備篇

golang是google發布的開源程式語言,這裡就不對其進行過多介紹,網上有很多文章已經把它的前身後世都介紹的很清楚了,有興趣的可以去查閱,前幾天剛開始接觸golang的開發,今天抽空在開發之餘對其做一些整理,今天要說的就是golang的基本資料型別。單純的介紹資料型別,沒有任何意義,無非就是幾幾...

Golang洗牌演算法

兩種洗牌演算法 1 fisher yates 2 knuth type handle struct fisher yates正向 func h handle shuffle fisheryates forward cards uint32,r rand.rand fisher yates反向 fun...

golang演算法 氣泡排序演算法

氣泡排序演算法 1.分析問題 將前n個數字分別進行比較,最大的移動到了最後 下一次,將前n 1個數字分別進行比較,最大的移動到了倒數第二位 依此類推。2.設計演算法 1 第一次排序 索引0至len 陣列 1左右元素進行比較,最大的數排在最後 2 第二次排序 索引0至len 陣列 2左右元素進行比較,...