- 博客(9)
- 收藏
- 关注
原创 常见排序算法(归并排序-曾经的笔记)
四、归并排序 思想:将两个或两个以上的有序表组合成一个新的有序表。 两路归并的迭代算法: 1个元素的表总是有序的。所以对n个元素的待排序列,每个元素可看成1个有序子表。对子表两两合并生成 个子表,所得子表除最后一个子表长度可能为1外,其余子表长度均为2。再进行两两合并,直到生成n个元素按关键码有序的表。 【效率分析】 需要一个与表等长的辅助元素数组空间,所以空间复杂度为O(n)。 对n个元素的表,将这n个元素看作叶结点,若将两两归并生成的
2011-03-31 02:47:00
445
原创 常见排序算法(选择排序-曾经的笔记)
三、选择排序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
413
原创 常见排序算法(交换排序-曾经的笔记)
二、交换排序 交换排序的基本思想就是两两比较待排序的关键码,如果遇到逆序(与目标顺序正好相反) 时,就进行交换,直到所有对象都排好序为止。常见的交换排序有:起泡排序和快速排序。1.起泡排序 思想:从前往后,将第一记录与紧接其后的记录进行比较,若为逆序,则交换,然后比较第二个记录与第三个记录比较,逆序则交换,依此类推直到最后。然后再从第一个到倒数第二个记录,重复以上操作,直到只剩下第一个记录为此。总之,当递增排序时,可以这样处理:每次比较相邻的两个元素,大者向下移动,小者向上移动,每一趟起
2011-03-31 02:26:00
504
原创 常见排序算法(插入排序-曾经的笔记)
一、插入排序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
529
原创 为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
2051
原创 在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
1195
原创 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
961
原创 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
2067
原创 由数据成员地址获取对象首地址
如果你想由数据成员地址获取对象首地址, 可能编写像下面的宏:// FromMember宏// 功能:由数据成员地址获取对象首地址// 参数:class-对象类名// memberName-数据成员名称// pMember-数据成员地址#define FromMember(class,memberName,pMember) / (class*)((char*)(pMember)-(char*)&(((class*)0)
2011-03-07 02:51:00
944
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人