自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 常见排序算法(归并排序-曾经的笔记)

四、归并排序    思想:将两个或两个以上的有序表组合成一个新的有序表。    两路归并的迭代算法:        1个元素的表总是有序的。所以对n个元素的待排序列,每个元素可看成1个有序子表。对子表两两合并生成    个子表,所得子表除最后一个子表长度可能为1外,其余子表长度均为2。再进行两两合并,直到生成n个元素按关键码有序的表。    【效率分析】         需要一个与表等长的辅助元素数组空间,所以空间复杂度为O(n)。         对n个元素的表,将这n个元素看作叶结点,若将两两归并生成的

2011-03-31 02:47:00 439

原创 常见排序算法(选择排序-曾经的笔记)

三、选择排序1.简单选择排序    思想:总是从其余部分选择出最大或最小的记录到有序子列中, 开始时有序子列的长度为0,随着每趟的选择长度每次增加1。        从程序中可看出,简单选择排序移动记录的次数较少,但关键码的比较次数依然是1─2n(n+1),所以时间复杂度仍为O(n2)。template void SelectSort(_It first, _It last, _Ty& tmp, _Cmp& cmp) {// 对 [first, last) 进行选择排序 _It sIt; f

2011-03-31 02:37:00 409

原创 常见排序算法(交换排序-曾经的笔记)

二、交换排序        交换排序的基本思想就是两两比较待排序的关键码,如果遇到逆序(与目标顺序正好相反) 时,就进行交换,直到所有对象都排好序为止。常见的交换排序有:起泡排序和快速排序。1.起泡排序    思想:从前往后,将第一记录与紧接其后的记录进行比较,若为逆序,则交换,然后比较第二个记录与第三个记录比较,逆序则交换,依此类推直到最后。然后再从第一个到倒数第二个记录,重复以上操作,直到只剩下第一个记录为此。总之,当递增排序时,可以这样处理:每次比较相邻的两个元素,大者向下移动,小者向上移动,每一趟起

2011-03-31 02:26:00 498

原创 常见排序算法(插入排序-曾经的笔记)

一、插入排序1.直接插入排序    思想:要将第i个记录插入到已排好序的有序子列(由前i-1个元素组成)中,先顺序查找到记录的插入位置,然后进行插入操作,从而得到一个新的、记录数增加1的有序表。插入位置的确定通过对有序子列中记录按关键码逐个比较得到的。    递归版本:    template void InsertSort(_It first, _It last, _Ty& tmp, _Cmp& cmp){ //对 [first, last) 进行插入排序, tmp是辅助变量 if (las

2011-03-31 02:16:00 524

原创 为LUA封装C/C++函数(不涉及结构体等参数形式)

四、为LUA封装C/C++函数(不涉及结构体等参数形式)        由上例中的int _cdecl MyCMax(lua_State* L)函数的实现,可以看出lua调用一个非lua_CFunction类型的函数的过程:(1) 为该函数实现一个lua_CFunction类型的函数(或模板)封装。(2) 调用LUA库的注册函数以某name注册封装函数    (3) 封装函数从LUA栈中为原函数(被封装)获取参数。    (4) 封装函数使用(3)所获取的参数call原函数。    (5) 最后封装函数将原

2011-03-31 01:44:00 2036

原创 在LUA脚本中调用C/C++函数

三、在LUA脚本中调用C/C++函数        可以被Lua函数调用的C函数必须遵循的协议(这个协议定义了参数和结果的传递方式):C函数从LUA栈上按直接的顺序获取参数(第一个参数首先被push)。所以当C函数开始执行时,lua_gettop(L)返回这个C函数的参数个数。第一个参数(如果有的话)索引为1,而最后一个参数的索引为lua_gettop(L)。为了将结果传递到LUA中,C函数将结果以直接的顺序push到栈上,并以结果的个数作为自己的返回值。栈上除结果以外的其它值将自动地被LUA以适当的方式删

2011-03-31 01:42:00 1184

原创 C/C++函数调用LUA函数

二、C/C++函数调用LUA函数        为应用程序注册新的C函数到Lua是扩展Lua的基本方法之一。一般本说,从Lua中调用C函数,不是指Lua可以调用任何类型的C函数。对于一个C函数来说,要调用Lua函数就必须遵循一些简单的协议来传递参数和获取返回结果。与此类似,从Lua中调用C函数,也必须遵循一些协议来传递参数和获得返回结果。具体来说,Lua和C上通过栈来交互的。特别注意的是,当Lua中调用C函数的时候,被调用的C函数总是获得一个新的LUA栈,这个栈不同于一般的栈以及C函数自己的栈。它包含最初的

2011-03-31 01:40:00 946

原创 VC++6.0配置LUA环境和C++调用LUA的简单示例

VC++6.0配置LUA环境和C++调用LUA的简单示例一、VC++6.0配置LUA环境和C++调用LUA的简单示例LUA版本: 5.1.3   (http://www.lua.org下载lua 5.13源代码)编译lua 5.13源代码:(你可下载别人编译的,)配置LUA环境:工具→选项→目录,然后include files:见图(修改为你的LUA相应路径即可)library files:(同上)可执行文件:D:/PROGRAM FILES/LUA-5.1.3/LUA-5.1.3/BIN(可略)Test.

2011-03-31 01:38:00 2045

原创 由数据成员地址获取对象首地址

如果你想由数据成员地址获取对象首地址, 可能编写像下面的宏://   FromMember宏//   功能:由数据成员地址获取对象首地址//   参数:class-对象类名//             memberName-数据成员名称//             pMember-数据成员地址#define FromMember(class,memberName,pMember)     /             (class*)((char*)(pMember)-(char*)&(((class*)0)

2011-03-07 02:51:00 939

空空如也

空空如也

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

TA关注的人

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