叽叽喳喳,嘻嘻哈哈

导航

随笔分类 -  算法

算法学习笔记
两个字典增量部分
摘要:```python3 def get_increment_between_two_dict(item_old, item_new): """ 比较两个字典,并返回增量部分 :param dict_old = {"a":{"a_1":"haha","a_2":[1,2,3],"a_3":10},"b":{"b_1":"an","b_2":10}, ... 阅读全文

posted @ 2019-07-10 14:42 叽叽喳喳,嘻嘻哈哈 阅读(156) 评论(0) 推荐(0)

隐马尔科夫模型 通俗讲解
摘要:https://www.zhihu.com/question/20962240 知乎上的,看过的最好的讲解 阅读全文

posted @ 2017-06-11 19:38 叽叽喳喳,嘻嘻哈哈 阅读(170) 评论(0) 推荐(0)

转 通俗理解 最小二乘 和 最大似然估计
摘要:最大似然估计:现在已经拿到了很多个样本(你的数据集中所有因变量),这些样本值已经实现,最大似然估计就是去找到那个(组)参数估计值,使得前面已经实现的样本值发生概率最大。因为你手头上的样本已经实现了,其发生概率最大才符合逻辑。这时是求样本所有观测的联合概率最大化,是个连乘积,只要取对数,就变成了线性加 阅读全文

posted @ 2017-06-01 08:28 叽叽喳喳,嘻嘻哈哈 阅读(656) 评论(0) 推荐(0)

二叉树 —— 创建 + 先序、中序、后序遍历(递归+非递归)
摘要:创建如下二叉树: #coding:utf-8 class Node(object): '''构造节点''' def __init__(self,data=None,lchild=None,rchild=None): self.data = data self.lchild = lchild self 阅读全文

posted @ 2016-12-04 12:39 叽叽喳喳,嘻嘻哈哈 阅读(456) 评论(0) 推荐(0)

查找 —— 二分查找[递归+非递归]
摘要:二分查找 二分查找是对一组有序序列进行查找。根据要查找的k和序列中间元素比较,动态的移动查找范围。以对折的方式缩小查找范围。 递归方式: 非递归方式: 阅读全文

posted @ 2016-12-02 22:37 叽叽喳喳,嘻嘻哈哈 阅读(324) 评论(0) 推荐(0)

归并排序 —— 递归实现 + 非递归实现
摘要:归并排序 归并排序说的简单一点就是把一个大的序列分成多个子序列,再别对各个子序列进行排序,等所有子序列都排序完成之后,再逐步从所有的子序列里面抽出最小的元素放回到大序列里面。直至所有元素都放回大序列,从而完成排序。 是采用分治法的典型案例。 本例是 二路归并。 一个大的序列 分成两个子序列分别进行排 阅读全文

posted @ 2016-12-02 20:36 叽叽喳喳,嘻嘻哈哈 阅读(717) 评论(0) 推荐(0)

选择排序 ——堆排序
摘要:堆排序 在堆排序中,我们可以将顺序表看成一颗完全的二叉树 二叉树知识回顾: 从1开始对二叉树中的每个节点顺序编号 序列 : [ # , C, H, G, E, A, D, I, F, B, K ] 索引 1 2 3 4 5 6 7 8 9 10 所以编号为 i 的 左孩子节点编号为 2*i ; 右孩 阅读全文

posted @ 2016-12-02 10:37 叽叽喳喳,嘻嘻哈哈 阅读(789) 评论(3) 推荐(0)

选择排序——直接选择排序
摘要:选择排序 每一趟从待排序的元素中,选出最小的元素,放到已经排好序的序列的后面直到全部元素排序完毕。在这个过程中,有序区逐步扩大,而无序区逐渐缩小。 直接选择排序 直接选择排序是将无序区内的最小元素追加到有序区的后面,从而扩大有序区的范围。而我们又是在原地排序,所有也就相当与交换无序区的第一个元素和无 阅读全文

posted @ 2016-12-01 16:25 叽叽喳喳,嘻嘻哈哈 阅读(1773) 评论(0) 推荐(0)

交换排序 —— 快速排序
摘要:快速排序 快速排序是在等待排序的n个记录中随机取出一个元素作为基准,比基准小的元素放到基准左边,比基准大的放到基准的右边。 然后分别对基准两边的子序列进行上一步的操作。递归的进行,直到排序完成。 可以设置两个游标分别对序列左右两端的元素进行跟踪。以方便和基准比较大小进行移动。 如图所示,low 和 阅读全文

posted @ 2016-12-01 14:04 叽叽喳喳,嘻嘻哈哈 阅读(852) 评论(4) 推荐(1)

交换排序 —— 冒泡排序 + 改进
摘要:冒泡排序 冒泡排序是通过无序区相邻两个元素之间进行比较和位置交换,达到排序的目的。 插入排序是设定序列的 1 到 n-1 元素为无序区,初始有序区就只有 0 这个元素,然后将无序区中的元素和有序区中的元素逐个进行比较插入。从而是不断扩大有序区的范围。减少无序区的范围直至排序完成。 而冒泡排序则视整个 阅读全文

posted @ 2016-12-01 12:21 叽叽喳喳,嘻嘻哈哈 阅读(661) 评论(0) 推荐(0)

插入排序 —— 希尔排序
摘要:希尔排序 希尔排序也是插入排序的一种。又名缩小增量排序。它是对直接插入排序的一种改进。 直接插入排序是每次都和前面一个元素进行比较。其步长为 1。 希尔排序则不然,它得步长是动态变化的,或者说是由大到小变化的。希尔排序根据步长将整个序列分成n组。然后在各个子组内部分别进行元素的排序。接着缩小步长,相 阅读全文

posted @ 2016-12-01 11:06 叽叽喳喳,嘻嘻哈哈 阅读(283) 评论(0) 推荐(0)

插入排序 —— 直接插入排序 + 折半插入排序
摘要:插入排序 直接插入排序 每次将一个待排序的记录,按其关键字大小插入到前面的已经排好的子表中的适当的位置。直到全部记录插入完成为止。 看图说话,如图所示: 一共有 N 个记录 ,放在 R 列表中 R[0,n-1] 在排序过程中的某一时刻,呈现了如果所示的场景。 其中: 浅绿色为 已经排好序的 部分 称 阅读全文

posted @ 2016-11-30 19:49 叽叽喳喳,嘻嘻哈哈 阅读(2723) 评论(0) 推荐(0)

二叉树 —— 按层遍历
摘要:二叉树的遍历 二叉树的遍历分先序、中序、后序和层次遍历。实现方式分递归和非递归方式。 这里说说层次遍历。 层次遍历是逐层访问二叉树的每个节点。属于广度优先。常常使用队列的方式。 如图有以下一棵二叉树,它构建的队列形式为: 1、先把根节点 1 放入队列,然后弹出,看看它有没有左右孩子,如果有,按顺序将 阅读全文

posted @ 2016-11-30 15:37 叽叽喳喳,嘻嘻哈哈 阅读(737) 评论(0) 推荐(0)

KMP 算法
摘要:k 是一个集合的最大值 假如有一个匹配字符串 T,在 x 出匹配失败。那么从 T[0] 到 T[k-1] 取子字符串和从T[x-k] 到 T[x-1]取子字符串,如果相等,那么产生一个值放入集合中, 最后在集合中选取最大的就是 k值 如果下所示: 假如 匹配串 T = 'abaabcac' 在进行匹 阅读全文

posted @ 2016-11-12 20:20 叽叽喳喳,嘻嘻哈哈 阅读(210) 评论(0) 推荐(0)

B-F 字符串匹配算法
摘要:a[i] != b[j] 出现了不匹配的元素 从a 的第二个元素开始和b的第一个元素开始匹配 a[i] != b[j] 从a的第三个元素开始和b的第一个元素开始匹配 多图之后就会发现,如果出现不匹配,那么那么它们的初始匹配位置就在 a[i-j] 而下一次匹配 就从 a[i-j+1] 开始匹配 b[0 阅读全文

posted @ 2016-11-09 19:14 叽叽喳喳,嘻嘻哈哈 阅读(620) 评论(0) 推荐(0)