自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

转载 使用双栈实现表达式求值

<br />本文参考了iu_81的文章栈实现表达式求值,表示感谢!<br /> <br />算法要点:<br />1) 采用双栈,一个栈用来保存运算符,一个栈用来保存数据<br />2) 符号优先级设置<br />  i(+ -)< (* /)  <br />  ii 相同运算符,栈内优先级高于栈外优先级<br />  ii 对于栈内:左括号的优先级最高 右括号优先级仅高于'#'<br />  ii 对于栈外:与上面相反<br /> 3)计算时机<br />   当栈内运算符优先级 > 栈外运算符优先级:可

2011-04-26 11:06:00 7082

原创 设计模式之观察者模式(Observer模式)

声明:本文参考了北京尚学堂马士兵老师的设计模式视频,表示感谢~~~1.问题的提出1) 小孩正在睡觉2)醒来的的时候,爸爸需要喂东西给他吃请编写代码模拟以上场景。这个很好实现,请参考以下java代码:/** * 小孩类 */class Child implements Runnable{ private Dad d; public Child(Dad d) { this.d = d; } public void wakeUp() { d.feed(th

2011-04-01 22:58:00 854

原创 八种常见排序算法总结

下面从稳定性、时间复杂度、空间复杂度对冒泡、选择、插入、快速、希尔、堆、归并、基数排序算法做一个简单的总结:排序策略排序算法稳定性平均时间复杂度空间复杂度交换排序冒泡排序稳定O(n2)O(1)快速排序不稳定       O(nlogn)          O(1)选择排序选择排序不稳定O(n2)O(1)堆排序不稳定O(nlogn)O(1)插入排序插入排序稳定O(n2)O(1)希尔排序不稳定O(n1.f)0=O(1)归并排序归并排序稳定O(nlogn)O(n)分配排序

2011-04-01 12:17:00 775

原创 基数排序算法

<br />声明:本算法参考了百度百科中的相关文章,表示感谢~~~<br />/* * 基数排序 * 1)假设待排序的元素是由dk-1dk-2...d3d2d1个关键字组成 * 2)先按关键字d1进行排序,然后在前次排序的基础上,按照d2 * 排序,直到dk-1 * 稳定性:稳定的 * 空间复杂度 n*radix保存收集数据的空间 其中radix为关键字取值范围 * radix个指示每个队列元素个数的空间 * 时间复杂度: O(d(n+radix)) O

2011-03-31 22:54:00 572

原创 堆排序算法

<br />声明:本文参考了疯狂代码的文章,表示感谢,原文链接http://blog.csdn.net/jiqiren007/archive/2010/10/28/5972735.aspx<br />/* * 堆排序 * 1) 建堆,建堆是不断调整的过程,从len/2处开始调整,直到第一个节点,len是堆中元素的个数 * 建堆的过程是线性的过程,从len/2到0处一直调用调整堆的过程O(h1) + O(h2) + O(hlen/2), 其中h表示节点的深度,len/2表示节点

2011-03-30 17:36:00 527

原创 希尔排序算法

<br />/* * 希尔排序 * 它是一种改进的插入排序 * 取一个小于n的增量d,然后将所有距离为d的分为一组,进行插入排序 * 然后增量减小,但是最后一个增量d=1 * 稳定性:不稳定 * 空间复杂度:O(1) * 时间复杂度:最好O(n) 最差O(n2) 平均O(n2) */void ShellPass(int a[], int n, int d){ int temp, j; for(int i=d; i<n; i++) { j = i;

2011-03-29 22:35:00 528

原创 快速排序算法

<br />/* * 快速排序 * 基本思想 * 通过一趟排序,将要排序的数据分割成两个部分 * 其中一部分数据比另外一部分数据都要小 * 然后分别对两个部分再进行快速排序 * 整个过程可以用递归来解决 * 稳定性:不稳定 * 空间复杂度:O(1) * 时间复杂度:最好O(nlog2n) 最差O(n2) 平均O(nlog2n) *//* * 划分 */int Partition(int a[], int left, int right){

2011-03-29 21:10:00 469

原创 归并排序算法

/* * 二路归并排序 * 基本思想 * 当只有一个元素的时候终止排序,超过一个元素的时候,将所有 * 元素分成大致相同的两个集合,然后分别对两个集合进行排序,最后 * 将排好序的集合进行归并 * 稳定性:稳定 * 空间复杂度:O(n) * 时间复杂度:最好O(nlog2n) 最坏O(nlog2n) 平均O(nlog2n) *//* * 归并 */void Merge(int a[], int low, int high){ int mid =

2011-03-29 18:19:00 470

原创 插入排序算法

<br />/* * 插入排序 * 基本思想 * 1)从第0个位置开始,假设第0个位置为最小,跳到第二个位置, * 如果比第0个位置的数要小,插到第0个位置的前面,跳到第三个 * 位置,在前面已经排好序的情况下,找到合适的插入点,其它 * 情况依次类推 * 2)总共需要插入n-1次 * 稳定性:稳定 * 空间复杂度:O(1) * 时间复杂度:最好O(n) 最差O(n2) 平均O(n2) */void InsertSort(int a[], int

2011-03-29 14:56:00 432

原创 冒泡排序算法

/* * 冒泡排序(从小到大) * 基本思想 * 1)总共冒泡n-1次,每次进行相邻的两两相互比较,较大的交换到后面 * 2)一次冒泡总能将最大的一个数冒到最后,这样的过程类似于水中的气泡 * 上冒,故称冒泡排序 * 3)如果存在一次冒泡过程,没有任何数据进行交换,则说明已经有序,停止排序 这样可以提高性能 * 稳定性:稳定 * 时间复杂度:最好O(n) 最差O(n2) 平均O(n2) * 适用情况:n小时较好 */void BubbleSort(

2011-03-29 14:18:00 484

原创 选择排序算法

<br />#include <iostream>using namespace std;/* * 选择排序 * 基本思想 * 1)i从0到n-1,每次选择一个最小(最大)到i位置 * 2)总共需要选择n-1次 * 3)刚开始默认a[i]最小(最大) * 4)不要每次都交换,先记录索引号,最后一次再交换,可以提高性能 * 稳定性: 选择排序不稳定,例如 4 3 4 2 8, 4的先后顺序在交换的过程中被破坏了 * 时间复杂度:最好 O(n2) 最差 O(n2)

2011-03-29 12:40:00 458

原创 排列组合之组合问题算法实现

声明:本算法参考了网上其它的一些算法,在此表示感谢,由于是时隔很久的一个总结,相关参考链接已经忘了,故此处没有给出参考页面,敬请见谅~~~组合问题:问题:给定两个数n和r,求出从1到n中选出r个数的组合例如 n=5, r=3结果:1,2,3  1,2,4  1,2,5  1,3,4  1,3,5  1,4,5  2,3,4  2,3,5  3,4,5注意:如果你需要对一个数组的内容进行组合,你可以先对数组下标进行组合,然后再根据下标转换成对应的内容,故本算法具有通用性。1.采用回溯法实现分析:主要有两个回溯

2011-03-23 22:06:00 463

原创 排列组合之排列问题的算法实现

声明:本算法参考网上了其它的一些算法,在此表示感谢,由于是时隔很久的一个总结,相关参考链接已经忘了,故此处没有给出参考页面,敬请见谅~~~排列问题:问题:给定两个数n和r,求出从1到n中选出r个数的排列注意:如果你需要对一个数组内容进行排列,你可以转换成上面的形式,先对数组下标进行排列,然后按照下标还原成数组内容,故任何排列都转换成上面的形式,本算法具有通用性。#include using namespace std;const int MAXSIZE = 100;//用来保存一种排

2011-03-23 18:25:00 765

原创 c++中随机数的生成(rand_s)的使用

  在c++中如何生成随机数,以前我们是使用rand方法,然后配合srand和系统时间生成随机数种子来生成随机数。现在我们介绍一个新的方法,使用rand_s方法。函数原型为:errno_t rand_s( unsigned int* randomValue);其中randomValue用来接收生成随机数的缓冲区,随机数的范围为:0~UINT_MAX在使用该函数之前,必须定义宏#define _CRT_RAND_S 和 头文件 #include //该宏定义需要放在所有头文件的前面,否则可能编译通不过

2011-01-14 19:59:00 8265 1

转载 c++中两个类相互包含引用的相关问题

在构造自己的类时,可能会遇到两个类相互引用的问题。例如:class A{ int i; B b;}class B{ int i; A a;}在这种情况下,这样就会出现一个死循环a.b.a.b.a.b....,一般来说,应避免这种情况。如果确实需要的话,一般来说,至少有一方需要定义成指针。例如:class A{ int i; B b;}class B{ int i; A* a;}如果按照以上的方式,既然存在互相引用

2011-01-13 22:50:00 683

原创 asp.net下集成(Active Messenger)AM消息发送组件

   Active Messenger是杭州恒创软件公司开发的一个类似于MSN、QQ的即时通讯产品。它提供了Asim2.dll这个com组件,使得我们的web系统可以集成即时信息发送功能,官方提供的文档只有java,vb,Delphi几个版本的集成方法,下面我将谈到asp.net系统如何集成这一功能,主要步骤如下: 注册com组件把文件 SendAMMsgCom.dll 拷贝到C:/WINDOWS/system32下将asim2.dll ,解压复制到 c:/activesoft 目录下(目录可以自己确定,我

2010-12-16 17:07:00 1999 3

原创 不要在一个问题上纠结多次

<br />      现在正在做一个web项目,当然一个人并不是无所不知的,遇到问题的时候,我们习惯上百度或者google搜索解决问题的办法,抑或是上论坛发帖求助,然而当我们将问题解决了之后,我们可能并没有将问题的解决办法记录下来,等到下次遇到同样的问题之后,还是不会解决,更让人痛苦的情况是,当时是如何找到解决办法的过程无法重现。<br />      在同一个问题上纠结多次,着实让人头疼~~~<br />      <br />      现在决定将某些问题的解决方案以博客的形式记录下来,一来便于以后自

2010-12-15 20:20:00 487

空空如也

空空如也

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

TA关注的人

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