数据结构与算法
默伊清风
这个作者很懒,什么都没留下…
展开
-
算法之二叉树各种遍历
树形结构是一类重要的非线性数据结构,其中以树和二叉树最为常用。 二叉树是每个结点最多有两个子树的有序树。通常子树的根被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用作二叉查找树和二叉堆或是二叉排序树。二叉树的每个结点至多只有二棵子树(不存在度大于2的结点),二叉树的子树有左右之分,次序不能颠倒。二叉树的第i层至多有2的 i -1次方个结点;原创 2014-05-21 10:58:18 · 788 阅读 · 0 评论 -
二叉树所有根到叶子节点路径打印
思路:如果二叉树根结点buweikong原创 2014-10-18 01:22:31 · 2264 阅读 · 0 评论 -
把一个有序整数数组放到二叉树
对于有序数组,取中间节点作为根节点,将数组分成两部分,对数组的两部分递归构建左右子树原创 2014-10-18 01:15:18 · 1078 阅读 · 0 评论 -
二叉树的常见问题及其解决程序
二叉树的常见问题有如下几个,如果解决好了,就跟链表一样轻松:唯一不一样的是,二叉树是非线性结构。常见的问题如下: 二叉树的问题 1.二叉树三种周游(traversal)方式: [cpp] view plaincopy 二叉树的问题 1.二叉树三种周游(traversal)方式: 2.怎样从顶部开始逐层打印二叉树结点数据 3.转载 2014-10-16 00:56:19 · 645 阅读 · 0 评论 -
计算机中重要的32个算法[转帖]
奥地利符号计算研究所(Research Institute for Symbolic Computation,简称RISC)做了一个调查,投票选出32个最重要的算法: A* 搜索算法——图形搜索算法,从给定起点到给定终点计算出路径。其中使用了一种启发式的估算,为每个节点估算通过该节点的最佳路径,并以之为各个地点排定次序。算法以得到的次序访问这些节点。因此,A*搜索算法是最佳优先搜索的范例。集转载 2014-10-01 01:18:18 · 506 阅读 · 0 评论 -
字符串匹配
转自:http://mindlee.net/2011/11/25/string-matching/, 感谢 @酷~行天下 字符串匹配的朴素算法 字符串 T = abcabaabcabac,字符串 P = abaa,判断P是否是T的子串,就是字符串匹配问题了,T 叫做文本(Text) ,P 叫做模式(Pattern),所以正确描述是,找出所有在文本 T = abca转载 2014-09-30 10:53:31 · 663 阅读 · 0 评论 -
基数排序
编程论到极致,核心非代码,即思想。 所以,真正的编程高手同时是思想独到及富有智慧(注意与聪明区别)的人。 每一个算法都是一种智慧的凝聚或萃取,值得我们学习从而提高自己,开拓思路,更重要的是转换思维角度。 其实,我们大多数人都活在“默认状态”下。没有发觉自己的独特可设置选项-----思想。 言归正传(呵呵!恢复默认状态),以下学习基数排序。 【1】基数排序 以前研转载 2014-10-25 01:05:53 · 627 阅读 · 0 评论 -
十大编程算法助程序员走上高手之路
算法一:快速排序算法 快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比 较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构 上很有效率地被实现出来。 快速排序使用分治法(Divide and conquer转载 2014-09-03 22:24:01 · 536 阅读 · 0 评论 -
回文判断———数据结构栈的应用(一)
一、算法思想:原创 2014-09-09 22:49:04 · 10780 阅读 · 0 评论 -
最常用的排序——快速排序
冒泡排序可以说是我们学习第一个真正的排序算法,并且解决了桶排序浪费空间的问题,但在算法的执行效率上却牺牲了很多,它的时间复杂度达到了O(N2)。假如我们的计算机每秒钟可以运行10亿次,那么对1亿个数进行排序,桶排序则只需要0.1秒,而冒泡排序则需要1千万秒,达到115天之久,是不是很吓人。那有没有既不浪费空间又可以快一点的排序算法呢?那就是“快速排序”啦!光听这个名字是不是就觉得很高端呢。转载 2014-09-09 18:05:38 · 603 阅读 · 0 评论 -
八大排序算法
概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。 我们这里说说八大排序就是内部排序。 当n较大,则应采用时间复杂度为O(nlog2n)的排序方法:快速排序、堆排序或归并排序序。 快速排序:是目前基于比较的内部排序中被认为是最好的方法,转载 2014-08-20 16:01:37 · 565 阅读 · 0 评论 -
哈夫曼编码
哈夫曼编码(Huffman Coding)是一种非常经典的编码方式,实现起来也很简单,在实际的笔试面试过程中有可能会遇到,这里介绍一下它的原理和一个使用优先队列的实现版本。 一 编码原理 哈夫曼编码是一种可变长的编码,它依据字符出现的概率来决定字符编码的长度,使得出现概率大的字符编码长度短,出现概率小的字符的编码长度长,于是可以减少整体的编码的长度。 哈弗曼编码时首先根据转载 2014-06-11 19:12:26 · 1701 阅读 · 0 评论 -
判断一个链表是否有环
给定一个单链表,只给出头指针h: 1、如何判断是否存在环? 2、如何知道环的长度? 3、如何找出环的连接点在哪里? 4、带环链表的长度是多少? 解法: 1、对于问题1,使用追赶的方法,设定两个指针slow、fast,从头指针开始,每次分别前进1步、2步。如存在环,则两者相遇;如不存在环,fast遇到NULL退出。 2、对于问题2,记录下问题1的碰转载 2014-10-18 01:48:05 · 731 阅读 · 0 评论