自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(47)
  • 资源 (6)
  • 收藏
  • 关注

原创 二叉堆的实现

1.堆的概念 这里只需要注意两点: a.堆的存储方式:就是顺序存储在数组中,在二叉树中表现为满二叉树 b.堆的用处:用于排序,查找最大最小都非常方便   2.堆的实现 heapexception.h   #ifndef HEAPEXCEPTION_H #define HEAPEXCEPTION_H class ArrayOverFlowException{ publi...

2012-08-12 11:35:38 153

原创 KMP算法解析

  一.理论基础 1.什么是kmp算法 同BF算法一样,就是串的模式匹配算法。 前面已经学过,我想都应该明白BF算法,就是用一种最直观的方式进行模式匹配。 优点:非常容易理解,是我们常用的思维方式来编程; 缺点:效率比较低,在匹配不成功的时候,回朔做了许多无用功;   从而根据其缺点,KMP算法就在回朔的时候做了工作,减少其无用功,那么怎么去减少回朔的工作呢? 下面举例说明: ...

2012-08-12 11:35:06 182

原创 常见字符串操作大全

1.常见的字符串操作 如计算长度,求子串等都是考验基本功的,现在基本操作进行实现,如下   2.基本实现 mchar.h   //串的基本操作(注意:里面的所有操作要求串必须以'\0'结束) #ifndef MCHAR_H #define MCHAR_H //注意:这里面的i都是位置,从1开始;而数组中对应于0,从0开始 class MChar{ public: ...

2012-08-12 11:34:44 240

原创 排序方法总结

这里面包含了所有常见的排序操作 1.性能等比较分析 2.代码实现 sort.h   //各种排序方法总结 #ifndef SORT_H #define SORT_H template<class T> class Sort{ public: void insertSort(T r[], int n); //直接顺...

2012-08-12 11:34:14 141

set和map的简单实现

1.Set的简单实现 set是利用二叉查找树来实现的,而且为了查找方便,添加了另外两个指针,一个指向下一个最小结点,一个指向上一个最大结点。 iset.h   //利用二叉查找树实现set #ifndef ISET_H #define ISET_H template<class T> struct Node{ T data; Node<T> *r...

2012-08-10 11:35:25 137

红黑树的插入总结

1.红黑树 这个在july的博客中有详尽的说明,我就不在赘述了 http://blog.youkuaiyun.com/v_JULY_v/article/details/6105630   2.红黑树的插入 插入见下图:  

2012-08-10 11:25:43 143

B-树实现

1.什么是B-树? 这个在我的前一篇博客中已经详细的阐释过: http://hao3100590.iteye.com/blog/1576846 具体的了解,好好看看这篇文章就可以了!   2.实现关键问题分析 a.B-树删除原则 见下图:  当然总结起来,大的方面就3点,具体的细节就没有做多大的说明,在下面具体实现的时候会说明   b.B-树的递归和非递归遍历 对于非递归遍历...

2012-08-10 11:03:15 241

平衡二叉树

1.问题描述 什么是平衡二叉树?在此就不在赘述,下面主要就几个关键问题进行分析   2.关键问题 a.AVL树的非递归与递归插入 平衡二叉树的非递归的关键: 1.在寻找插入位置和旋转的时候设置其路径上的平衡因子,这个要特别注意 当然非递归比递归复杂的多,但是对于理解其执行过程很有帮助! 2.是旋转之后可能并没有产生效果(实际上是旋转成功,但是输出的树没有变),因为在修改的时候,并...

2012-08-10 10:39:48 140

二叉排序树

  1.基本概念 二叉排序树,树的定义就不赘述了,主要就是想说明一下在设计类的过程中需要注意的问题。 a.问题引入? 设计插入,删除等操作的过程中,我们的二叉排序树根节点的指针有可能改变,如删除根结点的指针操作,那么root的指针指向已经不是原来的位置,而是新的位置,怎么样才能返回最新的位置呢?   b.问题解决 在设计类中的函数就可以轻易的解决这个问题,这个在函数设计之初就必须详细...

2012-08-10 10:25:18 154

原创 B-树

1.B-树的概念 是一种多路搜索树,适合在磁盘等直接存取设备上组织动态的查找表,可能部分数据不在内存中。它作为索引文件的一种重要存储结构(数据库索引) 对于m阶(m>=3)B-tree,满足如下特性: 1)树中每个节点至多有m个节点 2)根节点子树个数在:2---m(根非叶子节点) 3)非根节点子树个数在:m/2(向上取整)---m。 4)排列规则:所有叶节点在同一层,按照递增次...

2012-07-04 22:48:35 201

原创 构造哈夫曼树

1.算法说明 就是建造哈夫曼树树,从而使得构造出的树带权路径长度最小   2.步骤   输入叶子结点个数n; 创建长度为2*n-1的数组并初始化; while(i<n) 循环输入n个叶子结点的权值; while(n-1次循环建立树){ 在parent==-1的元素中查找权最小的两个结点; 合并两个叶子结点,并加入新结点到数组; }   3.代码 //构造...

2012-07-04 10:40:17 336

原创 线索二叉树

1.算法描述 就是简单的线索二叉树的建立,遍历,查找等基本操作,具体什么是线索二叉树,百度一下!   2.算法说明 具体说明有四点:如下图 注:尤其要注意第4点,我在写的时候就没注意这个问题,结果遍历的时候出现了无限循环,找了半天才找到!主要是建立二叉树判断的惯性思维,故而容易出现错误!   3.代码实现 头文件   #ifndef BITHRTREE_H #define...

2012-07-04 09:20:15 141

二叉树基本操作大全

1.二叉树的基本操作 这里我有一个疑问:   在使用构造函数的时候,传参数的问题? 开始我是这么理解的------只使用指针(其实指针本身就是一个地址,相当于引用,也会改变root建立起二叉树),而2指针的引用,相当于就是对记录了指针的地址,采用了二次引用,其实是没有必要的,一次就够了。但是实际上用的时候并不是这样?根本不能建立二叉树,原因是因为开始指针指向的是一个不确定的位置?然后我又实...

2012-07-03 18:22:17 304

多种队列的实现

1.算法描述 a.数据结构与算法(Mark Allen Weiss)3.28双端队列的实现,在队列的两端都可以进行插入和删除工作,每种操作复杂度O(1). b.没有头结点和尾结点的队列实现 c.循环数组的队列实现   2.算法实现 a.由于有复杂度的限制,和两端插入删除,故而使用数组是不适合的,必须使用链表,我这里使用的是双向链表,在两端操作的复杂度就一样的,非常方便 b.没有头尾结...

2012-06-29 10:09:57 170

原创 栈的各种实现

1.算法描述 a.实现二个栈,在一个数组里面,除非没有任何空间剩余,否则不能有溢出声明 b.实现一个没有头尾结点的栈(单链表) c.实现带有头结点的栈(单链表)   2.双栈 对于双栈,我们还可以添加resize()方法,当空间满了重新自动分配空间(new),就是将原来的两个栈,拷贝到新建立的数组上面去 a.dsexceptions.h   #ifndef DSEXCEPTION...

2012-06-28 16:34:11 99

中缀表达式转换为后缀

1.算法描述   例如a+b*c这是常见的中缀表达式,但是为了方便计算,在计算机中常要转换为后缀表达式abc*+的形式,那 如何转换呢?   用到的关键数据结构:栈 转换的关键原则:   1.优先级判断:关键是比较运算符的优先级,谁的优先级高,谁就出现在前面上面的表达式中,有括号的时候括号优先级最高,* /次之,+-最后. 在上面的表达式中+的优先级不如*的高,因此,在后缀表达式...

2012-06-28 11:10:16 134

后缀表达式的值

1.算法描述 计算后缀表达式的值   2.事例 如:(2+3)*5--->后缀表达式:23+5*,或者523+* 在计算机中不能直接处理算术表达式,我们就转换为后缀表达式利用栈来解决这个问题   3.思想 利用数据结构栈 a.后缀表达式依次入栈,如果遇到操作符,就将栈顶两个元素出栈,计算结果在入栈。 b.循环进行,直到栈中只有一个元素,就是结果   4.算法 异常处...

2012-06-27 16:33:29 424

原创 vector的基本实现(c++)

1.描述 vector的基本操作实现(包括迭代器)   2.基本操作   3.代码   #ifndef DS_EXCEPTIONS_H #define DS_EXCEPTIONS_H class UnderflowException { }; class IllegalArgumentException { }; class ArrayIndexOutOfBoundsEx...

2012-06-27 09:57:02 142

单链表的简单实践

1.算法描述 数据结构与算法分析C++版:3.11 实现一个有序单链表,要求能返回链表大小,打印链表,检测x是否在链表(在则删除,否则添加)   2.实现 List.h   #ifndef LIST_H #define LIST_H #include <iostream> template<class T> struct Node{ Node&...

2012-06-27 09:29:31 134

原创 C++ 迭代器失效的问题

  转载自:http://blog.youkuaiyun.com/zhongjiekangping/article/details/5624922 众所周知当使用一个容器的insert或者erase函数通过迭代器插入或删除元素"可能"会导致迭代器失效,因此很多建议都是让我们获取insert或者erase返回的迭代器,以便用重新获取新的有效的迭代器进行正确的操作:view plaincopy to clip...

2012-06-25 17:15:01 115

Josephus问题

1.算法描述 简单的游戏:有N个人坐成一圈,编号1-N、从编号为1的人开始传递热马铃薯。M次传递之后,持有马铃薯的人退出游戏,圈缩小,然后游戏从退出人下面的人开始,继续进行,最后留下的人获胜。如,M=0, N=5则参加游戏的人依次退出,5号获胜。M=1,N=5则退出顺序是2,4,1,5.   2.算法分析 该算法使用一个没有头指针的循环链表完成,移动的过程计数,如果计数为M,则将其移除并从...

2012-06-21 15:30:39 178

原创 单链表的面向对象实现

1.利用非面向对象定义节点Node 下面是头文件LinkList.h   #ifndef LinkList_H #define LinkList_H template<class T> struct Node{ Node<T>* next; T data; }; template<class T> class LinkList{...

2012-06-20 15:59:06 400

原创 关于最长递增子序列的实际应用--动态规划

参考链接: a.http://www.programfan.com/blog/article.asp?id=13086 b.http://blog.youkuaiyun.com/hhygcy/article/details/3950158   1.对(http://hao3100590.iteye.com/blog/1548135)中问题6:最长递增子序列的改进,减少时间复杂度 算法的思想:   ...

2012-06-07 11:35:46 430

原创 动态规划

该文章转载自:http://www.cppblog.com/Fox/archive/2008/05/07/Dynamic_programming.html 非常感谢! 以前在学习非数值算法的时候,曾经了解过动态规划算法(Dynamic programming),以下是对Wikipedia上动态规划的翻译,图也是Wikipedia上的,仓促行文,不到之处,请方家指正。 这篇文章的术语实在...

2012-06-06 11:23:09 117

原创 线性查找二维数组

1.算法描述 有序(行有序,列有序,且每行从左至右递增,列从上至下递增)二维数组查找,要求复杂度O(n)   2.使用到的相关知识: 结构体定义和使用,二维数组传递(http://blog.youkuaiyun.com/yzhhmhm/article/details/2045816)   3.使用数组名传递 这个的不便之处很明显,一旦确定就是不能设置列值 //使用数组名实现(不...

2012-06-05 17:23:29 158

原创 结构体

转载自:http://www.pconline.com.cn/pcedu/empolder/gj/c/0503/567930.html   1.结构体定义     简单的来说,结构体就是一个可以包含不同数据类型的一个结构,它是一种可以自己定义的数据类型,它的特点和数组主要有两点不同,首先结构体可以在一个结构中声明不同的数据类型,第二相同结构的结构体变量是可以相互赋值的,而数组是做不到的,...

2012-06-05 16:59:22 92

整数的随机置换

算法描述:生成前N个整数的随机置换,如{4,3,1,5,2},{4,5,3,2,1}是合法的,而{5,4,1,1,2}不合法,因为3没出现。 1.基本算法 该算法效率比较低,O(n*n*logn),主要就是随机的生成一个数,然后再一直数组中去检测是否存在,如果不存在才插入。从而效率低下   //使用的是思想1(O(n*n*logn)) int* getRandom(int* a, int...

2012-06-05 15:10:08 553

原创 c++中malloc与free

  from:http://hi.baidu.com/hayrek/blog/item/4ed2749a5e8307b2c8eaf4c3.html   c++中malloc与free 一、malloc()和free()的基本概念以及基本用法:  1、函数原型及说明:  void *malloc(long NumBytes):该函数分配了NumBytes个字节,并返回了指向这...

2012-06-04 15:32:28 820

原创 主元素算法

1.算法描述(算法分析2.26) 大小为N的数组A,其主元素是一个出现超过N/2次的元素(从而这样的元素最多只有一个)。例如,数组 3,3,4,2,4,4,2,4,4只有一个主元素4; 3,3,4,2,4,4,2,4没有主元素 求出主元素,没有请指出   2.书中列出了一种算法,暂且叫递归法,这可以自己看书,其复杂度也只有O(n)   下面介绍两种其他的方法。 在网上还有其他一些方...

2012-06-04 15:32:17 1936

原创 C++动态分配

1.动态分配实例模板: void alloc(int n){ //步骤1,分配(放于堆空间中) int *value = new int[n];//分配数组 int *a = new int(4);//分配指针 //步骤2,初始化(动态分配不会自动初始化) for(int i=0; i<n; i++) value[i]=0; //步骤3,释放 d...

2012-06-03 17:18:44 431

原创 求幂的递归和非递归

本文的非递归部分转载自:http://www.cnblogs.com/wallace/archive/2009/12/27/1633683.html 先上算法 1.递归算法   //幂运算的递归算法 long pow(long x, int n){ if(n == 0) return 1; if(n == 1) return x; if(n % 2 == 0){ ret...

2012-06-03 17:14:30 184

原创 二分查找的递归和非递归

二分查找,这个适用于已经排序好了的数组,没有排序那就先排序,不过要根据实际的情况,要是排序代价很小,这样很好了 /** *2.15,在有序数组中查找,利用二分查找的方法 * */ #include <iostream> using namespace std; /** *二分查找(也可以通过递归实现) * */ int sort(int *...

2012-06-03 16:42:11 81

原创 关于序列的几个算法

1.求最小子序列的和 就是对于连续的序列,找出连续序列中和最小的 例如:int a[LEN] = {4,-1,5,-2,-1,2,6,-2,1,-3}; 最小的子序列就是:-2,1,-3 对于下面的最大子序列就是:4,-1,5,-2,-1,2,6。     /** *最小子序列和 *n */ int subMinSum(int a[], int length){ i...

2012-06-03 16:38:31 437

原创 指针与复制构造函数

struct Node{ char *name; int age; Node(char *n="", int a=0){ name = new char[strlen(n)+1]; strcpy(name, n); age = a; } }  下面声明: Node node1("Roger", 20), node2(node1); //...

2012-06-03 15:39:27 262

素数的求解逐步改进

我的注释都写在代码里面了,就不在赘述了!如果有任何疑问欢迎留言 参考博客: 1.位操作总结:http://blog.youkuaiyun.com/morewindows/article/details/7354571 2.找素数算法总结:http://blog.youkuaiyun.com/hexiios/article/details/4400068 非常感谢上面两篇博客的仁兄,致谢! 尤其是读了位操作的...

2012-06-02 22:22:41 119

原创 1000亿以内素数计数算法

    转载自: 是一篇很好的文章,效率相当高,可惜注释少了些,看起来有些恼火   1000亿以内素数计数算法   /****************************************************************** copyright (C) 2007 Huang Yuanbing version 1.1, 2007 PrimeNumber m...

2012-06-02 16:51:42 880

原创 手机游戏的优化

手机游戏设计中由于设备性能限制,可能出现资源不足的情况,这就需要优化实现技术,游戏的优化有很多的技巧,在我做的这个游戏中使用了以下方法: ⒈   关于异常的处理 Java中提供了try/catch来方便用户捕捉异常,进行异常处理。但是如果使用不当,也会给J2ME程序的性能带来影响,所以在程序的编写过程中,应注意以下两点:如果可以使用if,while等逻辑语句来处...

2012-05-14 15:46:38 284

原创 Box2d碰撞筛选

  应用博客:http://blog.sina.com.cn/s/blog_6a2061a20100n0or.html   碰撞筛选就是一个防止某些形状发生碰撞的系统。按照具体需求设置哪些物体跟那些物体发生碰撞,跟哪些物体不发生碰撞。Box2D通过种群跟组索引支持碰撞筛选。组索引比较简单,设置其shapeDef的groupIndex值即可,例如boxDef.filter.groupIndex...

2012-04-26 14:52:52 313

带进度和时间的播放器

最近由于需要,做了一个音乐播放控制view,在上面需要能 *控制播放 *显示剩余时间 *显示进度(整个view就是一个进度条) *实现播放暂停,以及ProgressBar的第一二进度功能 开始想到用组合的方式实现,然后重写ProgressBar的方式实现,但是发现很困难而且文字显示也不行 最后只有自己动手写一个新的控制条 主要的原理就是绘制视图的时候控制onDraw,然后在上面画图片...

2011-12-19 21:15:55 415

断点续传和下载原理分析

最近做一个文件上传和下载的应用对文件上传和下载进行了一个完整的流程分析 以来是方便自己对文件上传和下载的理解,而来便于团队内部的分享 故而做了几张图,将整体的流程都画下来,便于大家的理解和分析,如果有不完善的地方希望 大家多提意见, 由于参考了网上许多的资料,特此感谢   首先是文件上传,这个要用到服务器 关键代码:  FileServer.java import ja...

2011-12-07 15:22:47 115

数据结构与算法分析java语言描述第二版MarkAllenWeiss

习题答案 数据结构与算法分析java语言描述第二版MarkAllenWeiss

2012-05-31

数据结构与算法分析C++源码(Mark Allen Weiss)

数据结构与算法分析源码(Mark Allen Weiss) 内含有java版的和c++版的源代码

2012-06-21

数据结构与算法分析java源代码

数据结构与算法分析java版源代码 Mark Allen Weiss出版的

2012-06-21

方块程序源代码及其演示方案

很多编程爱好者都编写过俄罗斯方块的游戏程序。很久以前,我用Tc2.0也做过一个;最近有好些朋友看见我以前的俄罗斯方块的程序后,问我是怎么做的。我一直想把这个程序的整个过程写一份详细的东西,与各位编程爱好者分享,一直没空。正好现在放假了,而且离回家还有几天。于是我就把这个程序重新写了一遍,尽量使程序的结构比较清晰好懂一些。同时写了下面的这份东东。 俄罗斯方块游戏的程序中用到了一些方法。为了比较容易理解这些方法,我在讲述的同时写了些专门针对这些方法的示例程序。这些示例程序力求短小,目的是用最小的代码能够清楚的示例所用的方法。这些示例程序都经过tc2.0测试。 最后还附了完整的俄罗斯方块游戏的源代码,和最终的可执行程序。 如果你看了这份东东,有什么意见和想法,请发电子邮件告诉我。我将会继续更新这分东东,最新的版本可以在我的个人主页上下载。 下面的问题是有关俄罗斯方块程序的,其中有些是朋友问我的,有些是我认为可能会被问到的。我尽量按问题从易到难排列这些问题。

2008-09-25

2002年电子科技大学数据结构专业课辅导班电子讲义

当年开辅导班的讲义 很有价值 主要是改卷老师讲的

2010-01-27

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除