数据结构....排序+查找
2007-05-11 00:52
281 查看
今天后来在看查找的部分.. 清华那本C语言描述的书...
看到二叉树部分... 二叉树中求平均长度的那个等式楞了挺久还是没得出来...
p(n)=(1-1/(n^2))p(n-1) + 2/n - 1/(n^2);
p(n) = 2(1+1/n)(1/2+1/3+...+1/(n+1)) - 1; 到这步的推导还没反应出来... 留着明天想了就`~
看求二叉排序数中的求后继算法的时候.... 突然发现.. 自己的思想确实是有点问题...
不够top-down??? 也许...
看到求后继的时候直接反应是其在树上的位置该是如何... 而实际上这是个数学关系..
二叉排序数按中序遍历得到的就是一个顺序的序列... 从这个角度出发很自然的能发现其后继该是在树上的哪个位置.. [或者说... 从图中.. 该反应到这个想法才行..] 这样可以得到很清晰的编程思路.... [似乎自己做类似题目的时候.. 还没学会用数学的角度来看待程序... 对这样类似的程序反应总是偏慢??? 至少尝试过的acm题目... 都不晓得真正的算法从哪里下手... 联想到那个数学模型去... /lh...]
正在看算法... 学习ing ...... [希望尽快让自己对程序有个好的数学觉悟... ]
二叉排序数的删除操作 // 来自 算法导论... remarked
Binary_search
1. 2 compare per loop
2. 1 compare per loop
if left[z] == null or right[z] == null
then y = z
else y = tree-successor(z)
if left[y] != null // this time jugde whether only one child
then x = left[y] //parent of y
else x = right[y]
if x != null // if z have no child
then p[x] = p[y] //x are left[y] or right[y]
if p[y] = null
then root[T] = x // T mean tree
else if y = left[p[y]]
then left[p[y]] = x
else right[p[y]] = x
if y != z // i'm not sure why this statement need if - -!
then key[z] = key [y]
return y
P.S: 那个team似乎现在放假也可以回老家了... 能陪丫头去旅游了就... 还是有点懒散啊... 今天下午上课的时候其实很压力... 机房的机子又让人郁闷... 结果就光坐着... 耗掉了中午的时间... 然后赶紧逃了回来... 郁闷无比... team里面估计就数我最最菜了... 要努力....
看到二叉树部分... 二叉树中求平均长度的那个等式楞了挺久还是没得出来...
p(n)=(1-1/(n^2))p(n-1) + 2/n - 1/(n^2);
p(n) = 2(1+1/n)(1/2+1/3+...+1/(n+1)) - 1; 到这步的推导还没反应出来... 留着明天想了就`~
看求二叉排序数中的求后继算法的时候.... 突然发现.. 自己的思想确实是有点问题...
不够top-down??? 也许...
看到求后继的时候直接反应是其在树上的位置该是如何... 而实际上这是个数学关系..
二叉排序数按中序遍历得到的就是一个顺序的序列... 从这个角度出发很自然的能发现其后继该是在树上的哪个位置.. [或者说... 从图中.. 该反应到这个想法才行..] 这样可以得到很清晰的编程思路.... [似乎自己做类似题目的时候.. 还没学会用数学的角度来看待程序... 对这样类似的程序反应总是偏慢??? 至少尝试过的acm题目... 都不晓得真正的算法从哪里下手... 联想到那个数学模型去... /lh...]
正在看算法... 学习ing ...... [希望尽快让自己对程序有个好的数学觉悟... ]
二叉排序数的删除操作 // 来自 算法导论... remarked
Binary_search
1. 2 compare per loop
2. 1 compare per loop
if left[z] == null or right[z] == null
then y = z
else y = tree-successor(z)
if left[y] != null // this time jugde whether only one child
then x = left[y] //parent of y
else x = right[y]
if x != null // if z have no child
then p[x] = p[y] //x are left[y] or right[y]
if p[y] = null
then root[T] = x // T mean tree
else if y = left[p[y]]
then left[p[y]] = x
else right[p[y]] = x
if y != z // i'm not sure why this statement need if - -!
then key[z] = key [y]
return y
P.S: 那个team似乎现在放假也可以回老家了... 能陪丫头去旅游了就... 还是有点懒散啊... 今天下午上课的时候其实很压力... 机房的机子又让人郁闷... 结果就光坐着... 耗掉了中午的时间... 然后赶紧逃了回来... 郁闷无比... team里面估计就数我最最菜了... 要努力....
相关文章推荐
- C语言 数据结构排序与查找 数据结构实验之排序一:一趟快排
- C语言 数据结构排序与查找 数据结构实验之排序二:交换排序
- 数据结构之排序查找
- 数据结构——二叉查找(排序)树
- 数据结构(Java)——查找和排序(5)
- 数据结构实验:查找和排序
- 数据结构——算法之(005)(输入一个已经按升序排序过的数组和一个数字, 在数组中查找两个数,使得它们的和正好是输入的那个数字)
- 数据结构中排序和查找的算法
- 数据结构(Java)——查找和排序(4)
- 数据结构基础之排序、查找
- 数据结构中排序和查找各种时间复杂度
- 数据结构4--查找和排序
- 数据结构之二分法查找、快速排序思想与实现
- C语言 数据结构之排序与查找 数据结构实验之查找四:二分查找
- C语言 数据结构排序与查找 数据结构实验之排序三:bucket sort
- 数据结构实践——二叉树排序树中查找的路径
- 数据结构实验之查找三:树的种类统计(先排序树再中序遍历)
- 数据结构之排序和查找
- 数据结构之二分法查找、快速排序思想与实现
- 数据结构之二分法查找、快速排序思想与实现