
数据结构与算法
文章平均质量分 69
imJaron
这个作者很懒,什么都没留下…
展开
-
MIT HAKMEM算法分析
本文中^表示乘方 问题需求:计算32位整型数中的'1'的个数 思路分析: 1.整型数 i 的数值,实际上就是各位乘以权重——也就是一个以2为底的多项式: i = A0*2^0+A1*2^1+A2*2^2+... 因此,要求1的位数,实际上只要将各位消权: i = A0+A1+A2+...转载 2017-11-15 10:32:09 · 407 阅读 · 0 评论 -
二分查找(对半查找)的实现
namespace Data{ int iArray[] = { 3, 8, 1, 6, 2, 5, 4, 9, 7 }; int iArray1[] = { 2,2,18,9,1,3,2,0,19,20,15,6,12 }; int iArray2[] = { 2,1,1,2 }; vectorint>iVector = { 3原创 2017-12-20 16:41:07 · 1090 阅读 · 0 评论 -
详解KMP算法
KMP算法应该是每一本《数据结构》书都会讲的,算是知名度最高的算法之一了,但很可惜,我大二那年压根就没看懂过~~~之后也在很多地方也都经常看到讲解KMP算法的文章,看久了好像也知道是怎么一回事,但总感觉有些地方自己还是没有完全懂明白。这两天花了点时间总结一下,有点小体会,我希望可以通过我自己的语言来把这个算法的一些细节梳理清楚,也算是考验一下自己有真正理解这个算法。 什么是转载 2017-12-26 17:39:31 · 217 阅读 · 0 评论 -
快速排序的实现
直接上代码,里面有一个注意点就是当从右向左的时候(假设是按升序来排序),对于跟基准值相等的元素一定要进行处理,而不是跳过。或者从左向右的时候,对于跟基准值相等的一定要跳过,否则容易进入死循环,或者对有重复数字的数据中间过程有“假”快速排序的情况(比如2 2 9 1 2 3, 第一次循环很可能就变成了2 2 1 9 2 3,虽然最终结果是对的,但是这一步并没有把数据按照基准值进行划分)。原创 2017-12-18 15:20:01 · 267 阅读 · 0 评论 -
在链表中使用头结点与尾指针
http://blog.youkuaiyun.com/jmy5945hh/article/details/75748571 头结点首先,不要被以下三个词组弄混了:链表头:数据内容为第一个元素的结点。头指针:指向头结点元素的指针。头结点:数据内容无效,其指针是头指针。一句话描述为:头指针是指向头结点的指针,头结点是指向链表头的结点。转载 2018-01-06 21:21:59 · 19495 阅读 · 2 评论 -
链表插入与删除操作中的头、尾指针
[题目]:有一个单链表,它的元素全部是整数。head和tail分别是指向该链表第一个元素(即头元素)和最后一个元素(即尾元素)的全局性指针。请实现调用接口如下所示的两个C语言函数: int Delete (element *elem);转载 2018-01-06 21:44:42 · 2574 阅读 · 0 评论 -
浅谈数据结构-二叉树
二叉树是树的特殊一种,具有如下特点:1、每个结点最多有两颗子树,结点的度最大为2。2、左子树和右子树是有顺序的,次序不能颠倒。3、即使某结点只有一个子树,也要区分左右子树。一、特殊的二叉树及特点 1、斜树所有的结点都只有左子树(左斜树),或者只有右子树(右斜树)。这就是斜树,应用较少2、满二叉树所有的分支结点都存在左子树和右子树,并且所有的叶转载 2018-01-09 19:52:49 · 262 阅读 · 0 评论 -
KMT思想感悟
KMT字符串匹配算法的核心是1. 如何计算出NEXT数组 2. 对该算法思想的理解。今天又复习了下这个算法,领悟了一套自认为更形象的理解。概括一句话就是:可以把KMT看成是暴力算法的加速版本或者跳跃版本,而如何加速跳跃则是NEXT数组的用途所在。首先考虑暴力算法,T(目标串),P是模式串,即寻找P在T中的位置。T: AACAAXEEP: AACAAZDD在X与Z处,出现了不匹配。按照暴力算法,我们...原创 2018-03-15 15:36:24 · 994 阅读 · 0 评论