算法和数据结构
hxxiaopei
这个作者很懒,什么都没留下…
展开
-
数据结构:最小堆/哈希表/二叉树/平衡二叉树/红黑树的意义(什么情况下使用)
接触堆数据结构是在排序里面讲的,空间复杂度O(1),时间复杂度O(NlogN),但是在实践中还是不如快速排序(好像快速排序可以更好的利用硬件特性)。堆的意义就在于:最快的找到最大/最小值,在堆结构中插入一个值重新构造堆结构,取走最大/最下值后重新构造堆结构 其时间复杂度为O(logN),而其他方法最少为O(N).堆实践中用途不在于排序,其主要用在调度算法中,比如优先级调度,每次取优先级最高的,时间原创 2006-11-19 10:27:00 · 4783 阅读 · 1 评论 -
关于数组的一些面试题目
1、google面试题:(1)一个数组存放了2n+1个整数,其中有n个数出现了2次,1个数出现了1次,找出出现1次的数是多少?(可能不少人遇到过,但是当时 我是第一次遇到,我把我的经过给大家讲一遍) A. 由于想在最短时间内解决,我首先想到最简单的办法,使用映射统计的办法,借助辅助数组(长度为n+1,元素为一结构体(包含数值和 个数两个成员))进行计数,但是时间复杂度为O(n*n),空间复杂度为O(n+1),面试官让我改进。 B. 接着我在纸转载 2010-11-14 19:03:00 · 1239 阅读 · 0 评论 -
基本图算法: BFS和DFS---shortest path和topological sort
今天看了算法导论中基本图算法。BFS和DFS。BFS可以用来寻找两点之间的最短路径.而DFS可以进行拓扑排序,思路非常简单。记录一下~~~原创 2007-03-16 10:17:00 · 2465 阅读 · 0 评论 -
基本图算法:强连通子图
对于给定的图G,如何取得其分解求的其强连通子图? 定义 Gt 为transpose(G),将所有的边反向DFS(G)对G进行深度优先搜索。d[u] f[u]节点u的开始和结束时间算法DFS(G),节点按照f降序排列 计算 Gt计算DFS(Gt)最后获得的tree中有所有的连通子图。原创 2007-03-17 14:41:00 · 3886 阅读 · 0 评论 -
红黑树(RBTree)的分析和实现
二叉排序树在查找方面提供了很大的方便,但是对worst-case查找/插入/删除/求最值 得时间复杂度都为O(n).红黑树可以保证在worst-case下查找/插入/删除等的复杂度得到O(lgN)。红黑树保持如下特性:1。节点不是red 就是black2。root为black3。所有的leaf为black4。所有red node 的孩子为black5。任一node通过左子树原创 2006-11-25 16:53:00 · 3641 阅读 · 1 评论 -
order statistics(找最ith小数值)问题
order statistics就是在一堆无序的序列中查找第n小元素。分为2种:1.静态,也就是序列给定,并且不再变化,此时采取类似快排的做法,需要改变判断条件和结束条件。2动态,就是元素在不断的增加和减少,在此过程中需要查找第nth元素,此时需要使用RBTree来实现,在data区加上一个value,表示以此为根的子树种节点个数(http://blog.csdn.net/hxxiao原创 2006-11-29 12:29:00 · 1693 阅读 · 0 评论 -
[topCoder-每日一二题]--[6]----动态规划
一个比较有意思的题目,一条街上有很多房子,现在需要对房子染色(红,绿,蓝) ,染色需要耗费资金,染成rgb耗费不同,并且相邻房子的颜色不同,求最少耗费。给出一个vectorhouses,每一个元素形如" 1 100 123",表示染成rgb对应的耗费。 The people of RGB Street h原创 2006-11-16 21:15:00 · 2109 阅读 · 0 评论 -
排序之线性排序(counting sort, radix-sort, bucket-sort)
Counting SortCount sort的约束是:排序key可用有限的k描述出来。Count sort有约束的情况下,O(n)的复杂度,stable排序。空间复杂度也为O(n)Counting-Sort(A, B, k) For i Do C[i] For j Do C[A[j]] For I Do C[i] For j原创 2010-11-15 13:27:00 · 2348 阅读 · 0 评论