要说的话~
开始Go语言有一段时间,学习的过程感觉挺好的,我认为学好一门语言的基础,就是拿它实现我们常用的数据结构和算法,正好,这段时间也想把数据结构和算法好好梳理一下,并且把自己工作这几年的一些点滴回忆一下,分享一下,因此开了此博客。这主要是算法的板块,我主要会以Go语言来实践,也可能会出现一些C或Java代码。
吐槽一下博客园没有Go的代码模板......
小试牛刀,先写两个简单的算法吧!
- 冒泡排序
-
/** *这是一个排序的工具包,里面实现了基本的排序算法。 */package sort/** * 冒泡排序法 */func BubbleSort(toSortArray []int) { lenth := len(toSortArray) for i := 0; i < lenth-1; i++ { for j := 0; j < lenth-i-1; j++ { if toSortArray[j] > toSortArray[j+1] { //交换二者的值真是方便啊 toSortArray[j], toSortArray[j+1] = toSortArray[j+1], toSortArray[j] } } }}
- 折半查找
-
package searchconst ( //未找到标识 NotFound = -1)/** * 输入数组切片(该数组切片是已经按照升序排序好的)和一个已知的数X,查找数X在数组切片的索引。 */func BinarySearch(aSlice []int, x int) (index int) { low, hight := 0, len(aSlice)-1 for { if low > hight { break } middle := (low + hight) / 2 if aSlice[middle] < x { low = middle + 1 } else if aSlice[middle] > x { hight = middle - 1 } else { return middle } } return NotFound}
-
Go语言里面没有while和do...while语法,不过我们可以通过for实现,具体可看我的另一篇博文这里相当于C语言的while循环。