数据结构和算法
谁不小心的
过于复杂,无法简介
展开
-
KMP算法详解+大牛是如何想到KMP算法的?
我们的目标是将模式串与待匹配串进行匹配,看模式串是否在待匹配的串之中,先来看传统的BF算法1. BF算法:模式串ababacbi 待匹配串ab原创 2012-10-31 00:06:41 · 1327 阅读 · 1 评论 -
由结构体成员地址计算结构体地址——节点地址的函数list_entry()原理详解
概述:在进行编程的时候,我们经常在知道结构体地址的情况下,寻找其中某个成员的地址;但是知道了成员的地址,如果找到这个结构体对应的地址呢?Linux内核中,获取节点地址的函数list_entry()非常常用,它被用来解决这个问题。1.list_entry的宏定义:#define list_entry(ptr, type, member) ((type *)((char *)(ptr)原创 2013-07-15 17:52:56 · 2640 阅读 · 0 评论 -
《算法导论》第十章——基本数据结构(一):栈与队列
引言:算法操作的集合可以随着时间的改变而增大,减小,或者产生其他变化,我们称这种集合是动态的。接下来的五章,我们将研究计算机上表示和操作有穷动态集合的一些基本技术。本文主要为你讲解栈与队列的操作和实现,建议将这些操作制作成库,方便以后的引用,避免重复编码。系列文章为算法导论的笔记和相关习题解答。原创 2013-10-15 11:00:44 · 1757 阅读 · 0 评论 -
算法复杂度精讲——算法时间复杂度的数学原理:从O(n(log(n))说起
概述:在设计算法的时候,要考虑两个方面,一个是算法的正确性,另外一个就是算法的效率,也就是复杂度,通常情况下,我们优先考虑的是时间复杂度,这也是本文要讨论的内容。算法学习的时候,经常碰到这样的问题,为什么快速排序的时间复杂度是O(nlog(n))?为何插入排序的时间复杂度是O(n^2)?这些是我们熟悉的算法时间复杂度,可能病没有太大的问题,那我们不熟悉的呢?如果我们采用三路归并排序而不是二路归并排原创 2013-05-19 19:13:44 · 9296 阅读 · 0 评论