自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 归并排序

归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。首先考虑下如何将将二个有序数列合并。这个非常简单,只要从比较二个数列的第一个数,谁小就先取谁,取了后就在对应数列中删除这个数。然后再进行比较,如果有数列为空,那直接将另一个数列的数据依次取出即可。//将有序数组a[]和b[]合并到c[]中void Mem

2015-03-25 16:56:12 413

原创 异或实现两个数的交换

通常的交换两个变量a,b的过程为int temp;temp=aa=b;b=temp;需借助上面的第3个临时变量temp.采用下面的方法,对于给定两个整数a,b,下面的异或运算可以实现a,b的交换,而无需借助第3个临时变量:    a = a ^ b;    b = a ^ b;    a = a ^ b;这个交换两个变量而无需借助第3个临时变量过程,

2015-03-20 19:23:04 453

原创 快速排序

高快省的排序算法有没有既不浪费空间又可以快一点的排序算法呢?那就是“快速排序”啦!光听这个名字是不是就觉得很高端呢。假设我们现在对“6  1  2 7  9  3  4  5 10  8”这个10个数进行排序。首先在这个序列中随便找一个数作为基准数(不要被这个名词吓到了,就是一个用来参照的数,待会你就知道它用来做啥的了)。为了方便,就让第一个数6作为基准数吧。接下来,需要将这个序列

2015-03-13 18:02:30 393

原创 算法复杂度比较

 1 大部分程序的大部分指令之执行一次,或者最多几次。如果一个程序的所有指令都具有这样的性质,我们说这个程序的执行时间是常数。 logN  如果一个程序的运行时间是对数级的,则随着N的增大程序会渐渐慢下来,如果一个程序将一个大的问题分解成一系列更小的问题,每一步都将问题的规 模缩减成几分之一 ,一般就会出现这样的运行时间函数。在我们所关心的范围内,可以认为运

2015-03-13 17:51:09 465

转载 一步一步写算法(之非递归排序)

在上面一篇博客当中,我们发现普通查找和排序查找的性能差别很大。作为一个100万的数据,如果使用普通的查找方法,那么每一个数据查找平均下来就要几十万次,那么二分法的查找呢,20多次就可以搞定。这中间的差别是非常明显的。既然排序有这么好的效果,那么这篇博客中,我们就对排序算做一个总结。    按照我个人的理解,排序可以分为两种:一种是非递归排序,它主要按照非递归的方法对数据进行排序,也就

2015-03-11 17:19:43 406

原创 希尔排序

插入排序的算法复杂度为O(n2),但如果序列为正序可提高到O(n),而且直接插入排序算法比较简单,希尔排序利用这两点得到了一种改进后的插入排序。一. 算法描述希尔排序:将无序数组分割为若干个子序列,子序列不是逐段分割的,而是相隔特定的增量的子序列,对各个子序列进行插入排序;然后再选择一个更小的增量,再将数组分割为多个子序列进行排序......最后选择增量为1,即使用直接插入排序

2015-03-11 17:10:50 480

原创 插入排序

在冒泡排序、选择排序编写代码之后,楼主渐渐找到了coding的信心,熟能生巧,就像写词唱曲之前,都得先背诵大量的诗词,熟悉各路歌曲,才能走出自己的路线,有自己的杰作。好吧,来让楼主继续进行"社会主义初级阶段"的任务,这次是插入排序。一. 算法描述    插入排序:插入即表示将一个新的数据插入到一个有序数组中,并继续保持有序。例如有一个长度为N的无序数组,进行N-1次的插入即能完成排

2015-03-11 15:27:48 413

原创 详解STL中的map和hash_map区别

在网上看到有关STL中hash_map的文章,以及一些其他关于STL map和hash_map的资料,总结笔记如下:    1、STL的map底层是用红黑树实现的,查找时间复杂度是log(n);    2、STL的hash_map底层是用hash表存储的,查询时间复杂度是O(1);    3、什么时候用map,什么时候用hash_map?    这个药看具体的应用,不一定常

2015-03-11 12:01:41 7686

转载 一步一步写算法(之查找)

无论是数据库,还是普通的ERP系统,查找功能数据处理的一个基本功能。数据查找并不复杂,但是如何实现数据又快又好地查找呢?前人在实践中积累的一些方法,值得我们好好学些一下。我们假定查找的数据唯一存在,数组中没有重复的数据存在。    (1) 普通的数据查找    设想有一个1M的数据,我们如何在里面找到我们想要的那个数据。此时数据本身没有特征,所以我们需要的那个数据可能出现在数组的各

2015-03-11 11:54:20 422

原创 Hash表

Hash表也称散列表,也有直接译作哈希表,Hash表是一种特殊的数据结构,它同数组、链表以及二叉排序树等相比较有很明显的区别,它能够快速定位到想要查找的记录,而不是与表中存在的记录的关键字进行比较来进行查找。这个源于Hash表设计的特殊性,它采用了函数映射的思想将记录的存储位置与记录的关键字关联起来,从而能够很快速地进行查找。1.Hash表的设计思想  对于一般的线性表,比如链表,

2015-03-11 11:48:55 413

原创 排序二叉树

说到二叉树,这可是数据结构里面的非常重要的一种数据结构,二叉树是树的一种,本身具有递归性质,所以基于二叉树的一些算法很容易用递归算法去实现。作为一种非线性结构,比起线性结构还是相对复杂的,很多人甚至看不懂算法的意思,不能理解。其实一开始接触这些东西还是挺晕的,不过你多看几遍,上机实现可能你就会觉得没那么复杂。因为你最后会发现,这些数据结构对于提高程序设计的能力有很大帮助,也是软件开发中必不

2015-03-11 10:25:35 536

转载 一步一步写算法(之循环和递归)

其实编程的朋友知道,不管学什么语言,循环和递归是两个必须学习的内容。当然,如果循环还好理解一点,那么递归却没有那么简单。我们曾经对递归讳莫如深,但是我想告诉大家的是,递归其实没有那么可怕。所谓的递归就是函数自己调用自己而已,循环本质上也是一种递归。    1)求和递归函数    我们可以举一个循环的例子,前面我们说过,如果编写一个1到n的求和函数怎么写呢,你可能会这么写: 

2015-03-09 14:13:02 400

转载 一步一步写算法(开篇)

转载自:http://blog.csdn.net/feixiaoxing/article/details/6835423算法是计算机的生命。没有算法,就没有软件,计算机也就成了一个冰冷的机器,没有什么实用价值。很多人认为,算法是数学的内容,学起来特别麻烦。我们不能认为这种观点是错误的。但是我们也知道,软件是一种复合的技术,如果一个人只知道算法,但是不能用编程语言很好地实现,那么再优秀的

2015-03-09 11:36:45 436

原创 详解Static_cast , Dynamic_cast及其背后的RTTI思想

问题: Static_cast 与 Dynamic_cast的区别来自书本上的解释:  用 static_cast ( expression )  1. static_cast(expression) The static_castlong, int->short etc.   用来数值之间的转化。2.  可以在相关指针之间转换,指针在void * 之间转换

2015-03-07 15:58:49 1612

原创 auto_ptr,scoped_ptr,shared_ptr,weak_ptr区别

auto_ptr,scoped_ptr,shared_ptr,weak_ptrauto_ptr的使用很简单,通过构造函数拥有一个动态分配对象的所有权,然后就可以被当作对象指针来使用,当auto_ptr对象被销毁的时候,它也会自动销毁自己拥有所有权的对象,release可以用来手动放弃所有权,reset可用于手动销毁内部对象。但实际上,auto_ptr是一个相当容易被误用并且在实际中常常

2015-03-06 16:02:58 718

转载 Windows下搭建IOS开发环境(一)

转载自:http://blog.csdn.net/lizhenmingdirk/article/details/29850159原文:http://blog.csdn.net/shangyuan21/article/details/18153605我们都知道开发iPhone等ios平台的移动应用时需要使用Mac本,但是Mac本都比较昂贵,所以我们可以采用Wind

2015-03-06 11:00:27 408

原创 C++创建不可拷贝的对象

有时候,进行类体设计时,会发现某个类的对象是独一无二的,没有完全相同的对象,也就是对该类对象做副本没有任何意义.因此,需要限制编译器自动生动的拷贝构造函数和赋值构造函数.一般参用下面的宏定义的方式进行限制,代码如下:// A macro to disallow the copy constructor and operator= functions // This sho

2015-03-06 10:44:08 564

转载 游戏服务器场景管理AOI方案

---------------------------------------------------------------------  AOI(Area Of Interest)在MMOPRG游戏服务器上是不可或缺的技术,广义上,AOI系统支持任何游戏世界中的物体个体对一定半径范围内发生的事件进行处理;但MMOPRG上绝大多数需求只是对半径范围内发生的物体离开/进入事件进

2015-03-05 11:34:50 1392

转载 游戏的AOI算法

游戏的AOI算法应该算作游戏的基础核心了,许多逻辑都是因为AOI进出事件驱动的,许多网络同步数据也是因为AOI进出事件产生的。因此,良好的AOI算法和基于AOI算法的优化,是提高游戏性能的关键。我在实践中所熟知的游戏AOI算法大致有两种,在此做一些总结,顺便梳理一下,打算设计出一套统一的接口封装不同的算法实现(网络上还有些其他算法,因为不熟悉不作记录了)。我所记录的这两种算法也

2015-03-05 11:34:13 871

转载 服务器AOI

这两天优化了一下一个Java页游服务器的AOI。其实这个优化纯属迫不得已,因为项目已经很久了,当时很多怪物还都是暗雷!!玩家在杀任务怪的时候,需要去地图里面乱转以碰见怪物。      根据策划的要求,将怪物刷成明怪。就是要玩家看到,当然怪物不一定要动。,只是作为一个影像。既然是优化,那我就彻底优化一下喽;之前的广播是这样子做的,一个玩家的状态更新(比如说坐标更新,头衔更新,

2015-03-05 11:29:38 801

转载 把 AOI 的部分独立出来

转载自:http://blog.codingnow.com/2008/07/aoi.html应该是在 blog 上第 2 次讨论 AOI 的问题了,另外还要算上一篇写完没有公开的。昨天刚出差回来,晚上跟前大唐的服务器主程聊了一下。扯到了 AOI 的问题,我提了个分离这个模块的方案,在此记录一下。AOI 主要有两个作用,一个是在服务器上的角色(玩家或 NPC )做出动

2015-03-05 11:26:24 582

转载 mangos地图管理

在魔兽中,一组服务器为一个世界,一个世界内同时存在着多个游戏场景,如东部王国,卡利姆多,监狱副本,战场等。每个游戏场景都对应着一幅地图,但一幅地图却并不一定能确定一个场景,这是因为有副本的存在。在一个场景地图里,还会分区域,比如东部王国里会有艾尔文森林区域、西部荒野区域等。  从wow客户端的adt及wdt数据里可以大致了解到地图相关数据。每张地图最多有64*64个格子

2015-03-04 16:22:25 899

转载 四叉树与八叉树

前序四叉树或四元树也被称为Q树(Q-Tree)。四叉树广泛应用于图像处理、空间数据索引、2D中的快速碰撞检测、存储稀疏数据等,而八叉树(Octree)主要应用于3D图形处理。对游戏编程,这会很有用。本文着重于对四叉树与八叉树的原理与结构的介绍,帮助您在脑海中建立四叉树与八叉树的基本思想。本文并不对这两种数据结构同时进行详解,而只对四叉树进行详解,因为八叉树的建立可由四叉树的建立推得。若有不足之

2015-03-04 14:09:14 579

空空如也

空空如也

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

TA关注的人

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