微博:
@TankyWoo基
新博客:
TankyWoo

2011年5月11日

摘要: 建议先看看前言:http://www.cnblogs.com/tanky_woo/archive/2011/04/09/2010263.html这一篇是关于红黑树的结点删除。依然和上一篇的插入一样,先用到了BST的删除结点函数,然后做相应的调整。不过,这里的调整思路颇为新颖。还是来看看略微改变后的删除结点函数:1234567891011121314151617181920212223242526Node* RBTreeDelete(RBTree T, Node *z){ Node *x, *y; // z是要删除的节点,而y是要替换z的节点 if(z->lchild == NULL || 阅读全文
posted @ 2011-05-11 11:56 Tanky Woo 阅读(2104) 评论(2) 推荐(3) 编辑

2011年5月8日

摘要: 建议先看看前言:http://www.cnblogs.com/tanky_woo/archive/2011/04/09/2010263.html插入结点用到了上一次BST的插入函数(做了一点添加),并且在此基础上增加了保持红黑性质的调整函数。还是先看看插入函数:123456789101112131415161718192021222324252627282930313233343536void RBTreeInsert(RBTree &T, int k){ //T->parent->color = BLACK; Node *y = NULL; Node *x = T; No 阅读全文
posted @ 2011-05-08 08:27 Tanky Woo 阅读(1843) 评论(2) 推荐(1) 编辑

2011年5月7日

摘要: 建议先看看前言:http://www.cnblogs.com/tanky_woo/archive/2011/04/09/2010263.html本章内容颇多,所以我分四篇来写,这一篇是关于一些基本的概念和选择,中间两篇分别是插入和删除,最后一篇是总结。上一章总结过BST(http://www.wutianqi.com/?p=2430),BST在高度较小时,可以获得很好的性能(因为BST的操作的平均时间为O(lgn)),但是在高度较大时,则性能就一般。而红黑树“近似平衡”,于是降低了平均时间,再者,红黑树并不追求“完全平衡”——它只要求部分地达到平衡要求,降低了对旋转的要求,从而提高了性能。谈到 阅读全文
posted @ 2011-05-07 09:14 Tanky Woo 阅读(2457) 评论(8) 推荐(3) 编辑

2011年5月3日

摘要: 建议先看看前言:http://www.cnblogs.com/tanky_woo/archive/2011/04/09/2010263.html推荐在看算法导论的这一章之前先看看严蔚敏老师在《数据结构》上的二叉查找树。整体来说二叉查找树不难,就是插入和删除节点时让人纠结,我就是在删除节点时各种纠结了。二叉树执行基本操作的时间与树的高度成正比。首先说下二叉查找树的性质:设x为二叉查找树中的一个结点。如果y是x的左子树中的一个结点,则key[y]<=key[x];如果y是x的右子树的一个结点,则key[y]>=key[x]。注意这个性质,和堆对比下,还是有区别的,并且这个性质表示二叉查 阅读全文
posted @ 2011-05-03 12:44 Tanky Woo 阅读(2555) 评论(1) 推荐(1) 编辑

2011年4月29日

摘要: 建议先看看前言:http://www.wutianqi.com/?p=2298第10章没法说,数据结构还是看严奶奶的比较好,所以《算法导论》上的这一章我随便瞄了几眼就过去了,不过话说回来,数据结构非常重要!!!所以,大家最好把严蔚敏的《数据结构》认认真真的看N遍!!!另外,推荐看看这个:数据结构的源码实现:http://www.cpp leyuan.com/viewthread.php?tid=418(大家把cpp和leyuan中间的空格手动去掉吧,网址被禁止了。)第11章散列表也属于数据结构方面的知识,第10章只是讲了最基本的几个结构。这一章也很简单,其实就是介绍了一些概念及思想,很容易理解 阅读全文
posted @ 2011-04-29 14:15 Tanky Woo 阅读(1820) 评论(2) 推荐(1) 编辑

2011年4月26日

摘要: 建议先看看前言:http://www.cnblogs.com/tanky_woo/archive/2011/04/09/2010263.html这一章的内容很简单,基本都是一些概念。第i个顺序统计量:在一个由n个元素组成的集合中,第i个顺序统计量(order statistic)是该集合中第i小的元素。最小值是第1个顺序统计量(i=1)最大值是第n个顺序统计量(i=n)中位数:一个中位数(median)是它所在集合的“中点元素”,当n为奇数时,i=(n+1)/2,当n为偶数是,中位数总是出现在 (下中位数)和 (上中位数)。找最大值/最小值问题,通过比较n-1次可以得出结果。MINIMUM(A 阅读全文
posted @ 2011-04-26 13:08 Tanky Woo 阅读(2154) 评论(5) 推荐(4) 编辑

2011年4月24日

摘要: 建议先看看前言 :http://www.cnblogs.com/tanky_woo/archive/2011/04/09/2010263.html这一节讲的是非线性排序。一.计数排序(Counting Sort)基本思想:对每一个输入元素x,确定出小于x的元素个数。适用范围:适用于输入是由小范围的整数构成的序列。稳定性:算法是稳定的。具体实现:/*Author:TankyWooBlog:www.WuTianQi.comDescription:计数排序*/#include<iostream>usingnamespacestd;//arr--初始输入数组,res--存放排序结果的数组, 阅读全文
posted @ 2011-04-24 09:28 Tanky Woo 阅读(2460) 评论(5) 推荐(5) 编辑

2011年4月21日

摘要: 建议先看看前言 :http://www.cnblogs.com/tanky_woo/archive/2011/04/09/2010263.html 第八章将介绍几种非比较排序—计数排序,基数排序,桶排序,这三种排序都在线性时间下运行的。 这一节决策树其实是对前面的堆排序,快排等是最优的比较算法的证明, 首先说下《算法导论》上对决策树的定义:一棵决策树是一棵满二叉树(注意看下面解释),表示某排序算法作用于给定输入所做的所有比较,而控制结构,移动等都被忽略了。 注意:这里个人认为定义是错误的,决策树不是一棵满二叉树,连完全二叉树都不是。(不知道有没有朋友看到这里和我想法一样?) 首先看看只有三个元 阅读全文
posted @ 2011-04-21 13:42 Tanky Woo 阅读(3409) 评论(3) 推荐(3) 编辑

2011年4月19日

摘要: 推荐先看看前言:http://www.cnblogs.com/tanky_woo/archive/2011/04/09/2010263.html其实这一篇我老早就写过了,只不过最近在总结《算法导论》,而第七章就是快速排序,我当初总结的快排也是根据算法导论来的,为了方便大家阅读,我在这里把曾经写过的重新再贴一遍。 前几天写过一个堆排序的文章(http://www.wutianqi.com/?p=1820),里面谢了很多讲解和代码注释,个人感觉快速排序不是很难,所以不想写讲解,也不需要写注释,大家如果不明白什么是快速排序,可以去看下文章最后我推荐的几个链接。 我查过网上很多关于快排的文章和代码,但 阅读全文
posted @ 2011-04-19 18:08 Tanky Woo 阅读(3278) 评论(4) 推荐(3) 编辑

2011年4月17日

摘要: 建议先看看前言:http://www.cnblogs.com/tanky_woo/archive/2011/04/09/2010263.html 上一章总结是的堆排序算法,这一章同样是利用了堆这种数据结构,实现在是优先级队列。 根据堆分为最大堆,最小堆,所以优先级队列也可以分为最大优先级队列和最小优先级队列。 优先级队列的概念和用途书上已经写的很清楚了,我就不再打一遍了。直接写出具体实现。 在实现前先说几点: 1.上一章说过,堆的length和heapsize要区分清楚,这一章的优先级队列里就用到了。 2.优先级队列用到了上一章的一些函数比如MaxHeapify(),不记得的可以复习下上一章。 阅读全文
posted @ 2011-04-17 15:00 Tanky Woo 阅读(2188) 评论(7) 推荐(1) 编辑

导航