算法
文章平均质量分 55
ericzhu1991
重庆大学计算机学院
主攻方向 Android系统架构, 移动虚拟化, Java虚拟机优化, 物联网, 云存储
展开
-
算法中的一些符号 O(big-Oh) Ω(big-theta) Θ(big-theta)
O(big-Oh) Ω(big-theta) Θ(big-theta)一、概述这是我们在算法的时间复杂度分析中经常会碰到的几个符号。符号后面括号里的是他们相应的读法。简单来说,第一个符号的意义相当于“小于等于”;第二个符号的意义相当于“大于等于”;第三个符号的意义相当于“等于”。其实还有一个o(little-oh),它的意义相当于“小于”,这里不做讨论。后面的讨论中都用比较通俗原创 2015-10-30 21:15:01 · 21110 阅读 · 1 评论 -
对Trie单词树的实现与思考
一. 为什么要使用Trie树Trie树可以将大量字符串通过树形结构组织起来,前缀相同的字符串共享存储空间,从而达到1)节约存储空间,2)加快特定查找速度(例如,以给定字符串开头的字符串的个数等)。二. C实现Trie树Trie树的建立void create_tree(struct Node* T, char dir[]){ int jc=1; //root节点已经在main函数中原创 2016-03-15 22:29:21 · 551 阅读 · 0 评论 -
检测链表环路引发的思考
一个小小的数学游戏引发的奇妙思路之旅!如题:请在O(n)时间复杂度内找出链表(存在环路)中环路的起点。解答:设定双(快慢)指针,慢指针每次向后移动一个元素,快指针每次向后移动两个元素。两指针依次向后遍历,直到相遇。相遇时,将慢指针指向头节点,将快指针设置为慢指针,继续向后遍历,直到相遇。相遇节点即为环路的起始节点。思考:实际上,巧妙地运用了速度为两倍的追赶相遇问题:他们会在前者的对称位原创 2016-03-07 11:32:33 · 516 阅读 · 0 评论 -
一个例子看懂递归
一、为什么要搞定递归在计算机科学与技术中,递归思想是简单而且复杂的。它可以将复杂的数学问题用简单的代码实现,但是要理解它却是需要复杂的思考。大多数算法中都巧妙的使用了,或者可以使用递归来完成,比如排序算法中的快速排序、堆排序、归并排序等,数据结构中树的遍历、平衡树的判断、二叉查找树的建立与维护以及图的遍历与最短路径求解等,动态规划、贪心算法等等,实在事太多太多,就不一一列举了。所以掌握好递归对原创 2016-03-08 22:00:12 · 1944 阅读 · 0 评论