初学算法
Sun_TTTT
要跑啊,少年,要跑
展开
-
手把手粗糙解析KMP算法
在介绍KMP算法之前,要介绍另一个算法——BF(Brute Force)算法,也就是传说中的男朋友算法(Boy Friend),这是对字符串是否匹配一种简单粗暴的算法,但是通常简单粗暴的算法的执行效率并不怎么样,KMP算法(看毛片)是对BF算法的基础上进行的一种优化,从而大大提升了执行效率,下面先讲一下BF算法是个什么东西。假如此时,我们有一个字符串 T=bbcabcdababcdabcdabde原创 2016-03-18 12:05:54 · 1024 阅读 · 2 评论 -
高快省的排序算法——快速排序
高快省的排序算法——快速排序快速排序是找出一个元素(理论上可以随便找一个)作为基准,然后对数组进行分区操作,使基准左边元素的值都不大于基准值,基准右边的元素值 都不小于基准值。假设我们对以下数组进行排序array[]{23,45,1,6,8,14,65,11},通常我们把第一个数字作为基准位置,并记录下该位置的数字,x=23,同时 还需要两个指针记录位置两边元素的位置,记为 i,j,此时 i=0,原创 2016-03-14 13:48:55 · 902 阅读 · 0 评论 -
归并排序(MergeSort)
在记录一下归并排序: 归并排序很简单,属于递归排序的一种。假设我们有两组数据(只是演示一下归并的规则,所以选用了两个有五个元素的无序集合,如果要将两个集合归并成有序集合,要不断分解集合直到每个集合都有一个元素,下面会有示意图) a:6 1 2 7 9; b:3 4 5 10 8;归并排序需要两个指针 i = 0 j = 0和一个长度为a.size+b.siz原创 2016-03-14 17:16:33 · 545 阅读 · 0 评论 -
最容易懂得红黑树
介绍红黑树是一个平衡的二叉树,但不是一个完美的平衡二叉树。虽然我们希望一个所有查找都能在~lgN次比较内结束,但是这样在动态插入中保持树的完美平衡代价太高,所以,我们稍微放松逛一下限制,希望找到一个能在对数时间内完成查找的数据结构。这个时候,红黑树站了出来。 阅读以下需要了解普通二叉树的插入以及删除操作。 红黑树是在普通二叉树上,对没个节点添加一个颜色属性形成的,同时整个红黑二叉原创 2017-03-23 17:00:58 · 137274 阅读 · 74 评论