
数据结构
zbuger
这个作者很懒,什么都没留下…
展开
-
出栈顺序合法性
我通常是按照下面的方法来判断的:假如入栈顺序为1234,给定一个出栈序列,如2431,它是合法的。因为对于出栈序列中的每一个数字,在它后面的、比它小的所有数字,一定是按递减顺序排列的。也许表述的不清楚,请看下面的例子。假如出栈序列为4123,显然不满足上述要求,因为对于4,它后面比它小的数字序列为123,递加,所以不是合法出栈序列。若出栈为3142,也不合法,因为3后面比它小的转载 2015-09-27 19:20:42 · 867 阅读 · 0 评论 -
二叉树的深度优先遍历和广度优先遍历
深度优先遍历,也就深入的遍历,沿着每一个分支直到走到最后,然后才返回来遍历剩余的节点。二叉树不同于图,图需要标记节点是否已经访问过,因为可能会存在环,而二叉树不会出现环,所以不需要标记。那么,我们只需要一个栈空间,来压栈就好了。因为深度优先遍历,遍历了根节点后,就开始遍历左子树,所以右子树肯定最后遍历。我们利用栈的性质,先将右子树压栈,然后在对左子树压栈。此时,左子树节点是在top上的,所以可以先转载 2015-10-02 19:52:51 · 442 阅读 · 0 评论 -
桶排序
桶排序在我们生活的这个世界中到处都是被排序过的东东。站队的时候会按照身高排序,考试的名次需要按照分数排序,网上购物的时候会按照价格排序,电子邮箱中的邮件按照时间排序……总之很多东东都需要排序,可以说排序是无处不在。现在我们举个具体的例子来介绍一下排序算法。首先出场的是我们的主人公小哼,上面这个可爱的娃就是啦。期末考试完了老师要将同学们的分数按照从高到低排序。小哼的班转载 2016-03-07 09:20:09 · 448 阅读 · 0 评论 -
各种排序算法的时间复杂度
原创 2016-03-13 13:51:28 · 405 阅读 · 0 评论 -
KMP算法
KMP算法,是由Knuth,Morris,Pratt共同提出的模式匹配算法,其对于任何模式和目标序列,都可以在线性时间内完成匹配查找,而不会发生退化,是一个非常优秀的模式匹配算法。但是相较于其他模式匹配算法,该算法晦涩难懂,第一次接触该算法的读者往往会看得一头雾水,主要原因是KMP算法在构造跳转表next过程中进行了多个层面的优化和抽象,使得KMP算法进行模式匹配的原理显得不那么直白。本文希望能够转载 2016-03-13 18:59:58 · 471 阅读 · 0 评论 -
快速排序
今天看到 V2EX 上有人讨论 社招还会问 “请手写选择排序算法” 吗?,看来还是有很多人关心的。结合自己最近面试的经历,我可以明确的告诉大家,类似这种问题,只要你的工作经验小于 10 年,基本上逃不掉。劝大家不如抽点时间早做准备。简式快排面试中遇到问快排的,如上面那个帖子中的情况。你就可以上一份简式快排了,何谓简式?最短的代码表述快排的思想。快排的思想,实质是分治法。转载 2016-03-09 12:54:41 · 371 阅读 · 0 评论 -
几种排序算法java版
package com.datastructure.sort; public class BubbleSort { public staticfinal int LENGTH=9; /* 冒泡排序 * 比较LENGTH-1趟 * 第一趟把最大的放到最后 * 第二趟把次大的放在倒数第二 * 第三趟把三大的放在倒数第三 * ...原创 2016-01-26 15:17:05 · 372 阅读 · 0 评论