算法
文章平均质量分 54
米兰的小铁匠1943
这个作者很懒,什么都没留下…
展开
-
go语言实现--斐波那契数列的3种方法
斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=1,F(1)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*)(引...原创 2018-05-21 21:14:16 · 6210 阅读 · 0 评论 -
go语言实现--二分查找算法
二分查找是logN级别的查找算法,前提是有序序列并且存储在顺序表中,如果是存储方式是链表则不能使用。二分查找的核心思想理解起来非常简单,有点类似分治思想。即每次都通过跟区间中的中间元素对比,将待查找的区间缩小为一半,直到找到要查找的元素,或者区间被缩小为 0。但是二分查找的代码实现比较容易写错。你需要着重掌握它的三个容易出错的地方:循环退出条件、mid 的取值,low 和 high 的更新。...原创 2018-05-21 20:03:19 · 2555 阅读 · 0 评论 -
go语言实现--常用的排序算法
以前用过c和php实现过一些常用的排序算法,现在用golang把它们再实现一遍1.冒泡排序冒泡排序的基本思想是,对相邻的元素进行两两比较,顺序相反则进行交换,这样,每一趟会将最小或最大的元素“浮”到顶端,最终达到完全有序。时间复杂度为O(n2)代码如下:package mainimport "fmt"func main() { arr := []int{8, 4, 2,...原创 2018-05-21 15:52:10 · 1874 阅读 · 0 评论 -
go语言实现--广度优先搜索迷宫
迷宫大致如下:左上角和右下角的点分别为起点和终点,灰色的点代表墙,走不通,白色的点可以走通,我们要做的是从起点走到终点,我们每到一个点便从上左下右四个方向探索它周围的四个点,如果是走过的点我们不要探索,计算出它的步数,用的广度优先算法。第一步:把起点(0,0)入队列,每次探索一个点,便把它出队列,坐标是行和列第二步:把(0,0)出队列,开始探索(0,0),发现只有(1,0)走得...原创 2018-05-02 08:34:29 · 1757 阅读 · 3 评论