引言-算法-Go

要说的话~

     开始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 search
    
    const (
        //未找到标识
        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循环。

posted on 2014-04-14 15:45  里克尔奇  阅读(333)  评论(0)    收藏  举报