摘要: 1、for循环的用法 (1)常规用法 方式1每次循环都会执行len函数,适用于动态循环(循环出口是动态的); 方式2适用于固定循环(一般为固定循环次数),固定循环不推荐使用方式1(如果循环出口是一个耗时的操作,会影响效率); (2)死循环 死循环一般用于监听操作,或者循环出口不唯一,需配合break 阅读全文
posted @ 2019-06-05 13:46 笃志弘毅 阅读(2369) 评论(0) 推荐(0) 编辑
摘要: 1、算法介绍 斐波那契数列:1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89…….,随着数列递增,前后两个数的比值趋近于0.618的黄金分割比。 斐波那契查找便是将黄金比例运用于查找中。 (1)查找序列arr元素个数:n (2)斐波那契数:F(1)=1,F(2)=1, F(k 阅读全文
posted @ 2019-05-30 14:34 笃志弘毅 阅读(1045) 评论(0) 推荐(0) 编辑
摘要: 1、算法介绍 插值查找是对二分查找的优化,是有序序列的查找算法。 二分查找:mid = (left + right)/2 = left/2 + right/2 = left - left/2 + right/2 = left + (right - left)/2 = left + (right - 阅读全文
posted @ 2019-05-30 10:56 笃志弘毅 阅读(2061) 评论(0) 推荐(0) 编辑
摘要: 1、算法介绍 (1)序列必须是有序的 (2)取序列的中间元素与查找值比较,相等返回元素下标 (3)根据序列升序或降序,中间元素小于或大于查找值的具体情况,选择中间元素右边或左边的序列重复步骤(2)(3), 未找到返回-1。 2、代码实现 2.1、golang 2.2、python3 阅读全文
posted @ 2019-05-30 10:04 笃志弘毅 阅读(156) 评论(0) 推荐(0) 编辑
摘要: 1、算法介绍 (1)遍历序列与查找值比较,相等返回所在下标 (2)未找到返回-1 2、代码实现 2.1、golang 2.2、python3 vscode使用run code若有中文乱码解决方式: 阅读全文
posted @ 2019-05-30 09:36 笃志弘毅 阅读(437) 评论(0) 推荐(0) 编辑
摘要: 1、算法介绍 归并排序采用分而治之的思想进行排序,需要额外的内存空间。 (1)申请arrRes与未排序序列arr相同内存空间,用于存放归并后的序列 (2)将未排序序列分为两份arrL与arrR,从arrL与arrR分别取出一个元素进行比较,较小的并入arrRes序列, 从并入元素所属的序列取下一个进 阅读全文
posted @ 2019-05-29 14:36 笃志弘毅 阅读(281) 评论(0) 推荐(0) 编辑
摘要: (1)func len(v Type) int 返回长度,取决于具体类型;字符串返回字节数;channel返回缓存元素的个数; (2)func cap(v Type) int 返回容量,取决于具体类型;切片返回底层数组长度;channel返回缓存容量; (3)func append(slice [] 阅读全文
posted @ 2019-05-29 14:12 笃志弘毅 阅读(525) 评论(0) 推荐(0) 编辑
摘要: 1、算法介绍 1.1、数据结构——堆 堆是一种近似完全二叉树的数据结构,其主要性质是:节点值大于等于(小于等于)其子节点的值。 大顶堆:节点值大于等于其子节点的值,用于升序排序。 小顶堆:节点值小于等于其子节点的值,用于降序排序。 1.2、堆的构建 1.3、算法步骤 (1)未排序序列构建堆 (2)堆 阅读全文
posted @ 2019-05-29 14:06 笃志弘毅 阅读(249) 评论(0) 推荐(0) 编辑
摘要: 1、算法介绍 (1)在未排序序列中找出最小元素,与未排序的第一个元素交换 (2)剩余未排序序列重复步骤(1) 2、代码实现 2.1、golang 2.2、python3 阅读全文
posted @ 2019-05-29 11:11 笃志弘毅 阅读(507) 评论(0) 推荐(0) 编辑
摘要: 1、算法介绍 快速排序是一种分而治之的思想。 (1)从待排序序列找一个元素(一般取第一个元素)作为基准元素 (2)遍历序列,小于基准元素排在基准元素左边,大于基准元素的排在基准元素右边,相等可随意(不稳定) (3)递归基准元素左右两边的序列进行步骤(1)(2),递归结束则排序完成 2、代码实现 2. 阅读全文
posted @ 2019-05-29 10:51 笃志弘毅 阅读(185) 评论(0) 推荐(0) 编辑