上一页 1 ··· 5 6 7 8 9 10 下一页
摘要: 前面讲了插入排序,交换排序,选择排序,下面接着来讲归并排序。 归并排序(Merge Sort)是利用"归并"技术来进行排序。归并是指将若干个已排序的子文件合并成一个有序的文件。 归并排序 基本思想:设两个有序的子序列(相当于输入序列)放在同一序列中相邻的位置上:array[low..m],array[m + 1..high],先将它们合并到一个局部的暂存序列 temp (相当于输出序列)中,待合并完成后将 temp 复制回 array[low..high]中,从而完成排序。 在具体的合并过程中,设置 i,j 和 p 三个指针,其初值分别指向这三个记录区的起始位置。合并时依次比较 array[i] 和 array[j] 的关键字,取关键字较小(或较大)的记录复制到 temp[p] 中,然后将被复制记录的指针 i 或 j 加 1,以及指向复制位置的指针 p 加 1。重复这一过程直至两个输入的子序列有一个已全部复制完毕(不妨称其为空),此时将另一非空的子序列中剩余记录依次复制到 array 中即可。 阅读全文
posted @ 2011-03-13 15:27 飘飘白云 阅读(639) 评论(0) 推荐(0) 编辑
摘要: 前面讲了插入,交换排序,下面接着来讲选择排序。 选择排序(Selection Sort)的基本思想是:每一趟从待排序的记录中选出关键字最小的记录,顺序放在已排好序的子文件的最后,直到全部记录排序完毕。 常用的选择排序方法有直接选择排序和堆排序。 阅读全文
posted @ 2011-03-09 21:56 飘飘白云 阅读(467) 评论(0) 推荐(0) 编辑
摘要: 前面我们讲了插入排序,下面接着来讲交换排序。 交换排序的基本思想是:两两比较待排序记录的关键字,发现两个记录的次序相反时即进行交换,直到没有反序的记录为止。应用交换排序基本思想的主要排序方法有:冒泡排序和快速排序。 冒泡排序(Bubble Sorting) 基本思想:从后往前扫描序列,通过相邻元素之间的比较与交换,使值较小的元素逐渐从后部移向前部(从下标较大的单元移向下标较小的单元),就象水底下的气泡一样逐渐向上冒。故称为冒泡排序法。 阅读全文
posted @ 2011-03-04 23:51 飘飘白云 阅读(880) 评论(0) 推荐(0) 编辑
摘要: 排序是数据处理中经常使用的一种重要运算,在计算机及其应用系统中,花费在排序上的时间在系统运行时间中占有很大比重,其重要性无需多言。下文将介绍常用的如下排序方法,对它们进行简单的分析和比较,并提供 C/C++ 语言实现。 所谓排序,就是要将一堆记录,使之按关键字递增(或递减)次序排列起来。根据排序所采用的策略,可以分为如上五种: 1、插入排序(直接插入排序、希尔排序); 2、交换排序(冒泡排序、快速排序); 3、选择排序(直接选择排序、堆排序); 4、归并排序; 5、桶排序(桶排序,基数排序); 其中插入排序、交换排序、选择排序、选择排序、归并排序都是基于关键字比较的排序,比较排序的平均时间复杂度好不过 O(nlogn)。 而桶排序是基于映射的排序,其平均时间复杂度可达到 O(n),但桶排序需要额外的空间来存储经过映射的记录。 通常在待排序记录较多的时候,基于映射的排序 O(n) 比基于比较的排序 O(nlogn) 的效率要高得多,这很好理解:用空间换时间。(查找算法其实也是如此,散列查找比其他查找算法的效率要高得多)。 另外,在讨论一个排序算 阅读全文
posted @ 2011-03-03 21:54 飘飘白云 阅读(597) 评论(0) 推荐(0) 编辑
摘要: 在上一篇文章《Android 上实现水波特效》中对水波波幅的计算是针对每一个像素的,效率比较低,尤其是在手机上运行,相当缓慢。我们可以利用线性插值进行优化,这样可以将计算减少一半(MeshSize 为 2)或减少四分之三(MeshSize 为 4),效率得以大大提升,即使是在水机上也能较为流畅地运行。 在下面的代码中,为了充分使用移位运算替代乘除法,MeshSize 必须为 2 的整次幂,MeshShift 就是其幂数,表示计算时的移位位数。 阅读全文
posted @ 2010-09-28 11:53 飘飘白云 阅读(916) 评论(0) 推荐(0) 编辑
摘要: 本文水波算法部分整理自 GameRes 上的资料,原作者 Imagic。我只是在学习 Android 的过程中,想到这个特效,然后就在Android 上实现出来,并在源算法的基础上添加了雨滴滴落特效,以及划过水面时的涟漪特效。 该程序在模拟器和真机上运行速度都较慢,需要进一步优化或使用 JNI 实现,如果你想到好的优化算法,请联系我:kesalin@gmail.com。 阅读全文
posted @ 2010-09-01 13:30 飘飘白云 阅读(1507) 评论(0) 推荐(1) 编辑
摘要: 双重锁:http://www.cs.wustl.edu/~schmidt/PDF/DC-Locking.pdfACCU上的讨论:http://accu.org/index.php/journals/1328http://accu.org/index.php/journals/1306ACE与Boost中singleton的不同实现:http://www.cppblog.com/Fox/archive/2009/09/22/96898.html 阅读全文
posted @ 2010-03-25 11:33 飘飘白云 阅读(163) 评论(0) 推荐(0) 编辑
摘要: 长久以来,C++一直突出于优秀的技巧和典范。老有名气的一个就是James Coplien在1995年提出的奇异递归模板模式(CRTP)。自那以后,CRTP便开始流行并在多个库中使用,尤其是Boost。例如,你可以在Boost.Iterator,Boost.Python或者Boost.Serialization库中看到他们。 在这篇文章中,我假设读者已经熟悉了CRTP。如果你想温习一下的话,我推荐你去阅读《C++模板编程》的第17章。在www.informit.com上,你可以找到该章节的免费版本。 如果你抱着OO的观点去看CRTP的话,你会发现,他和OO框架的有着共同的特点,都是基类调用虚函数, 真正的实现在派生类中。下面是一个最简单的OO框架实现代码: 阅读全文
posted @ 2010-03-25 11:26 飘飘白云 阅读(1318) 评论(0) 推荐(1) 编辑
摘要: glut使用示例 阅读全文
posted @ 2009-09-11 16:55 飘飘白云 阅读(2929) 评论(0) 推荐(0) 编辑
摘要: 在欧几里得(或称笛卡尔)空间里描述2D/3D 几何物体是很理想的,但在投影空间里面却并不见得。 我们用 (x, y) 表示笛卡尔空间中的一个 2D 点,而处于无限远处的点 (∞,∞) 在笛卡尔空间里是没有意义的。投影空间里的两条平行线会在无限远处相交于一点,但笛卡尔空间里面无法搞定这个问题(因为无限远处的点在笛卡尔空间里是没有意义的),因此数学家想出齐次坐标这个点子来了。 阅读全文
posted @ 2009-09-09 17:28 飘飘白云 阅读(7134) 评论(3) 推荐(3) 编辑
摘要: 平面方程以及点到平面的距离公式的推导。 阅读全文
posted @ 2009-09-09 15:38 飘飘白云 阅读(15548) 评论(1) 推荐(4) 编辑
摘要: 常见希腊字母读法 Α α alpha 角度;系数 Β β beta 磁通系数;角度;系数 Γ γ gamma 电导系数(小写) Δ δ delta 变动;密度;屈光度 阅读全文
posted @ 2009-09-09 08:02 飘飘白云 阅读(21836) 评论(0) 推荐(0) 编辑
摘要: OpenGL 下有一些重用的辅助库,比如glut,glee,glew等等,在windows平台下需要自己安装,因为微软为了推广自己的DX,在windows下只支持openGL 1.1版本。现在openGL已经发展到3.0了,因此我们需要自己下载配置这些库,在这里我们来安装glut, glee, glew这三个库。 阅读全文
posted @ 2009-09-08 13:46 飘飘白云 阅读(12501) 评论(4) 推荐(0) 编辑
摘要: 这一系列文章介绍Microsoft Visual Studio 2010 中支持的C++ 0x特性,目前有三部分。 Part 1 :介绍了Lambdas, 赋予新意义的auto,以及 static_assert; Part 2( 1 , 2 ):介绍了右值引用(Rvalue References); Part 3 :介绍了表达式类型(decltype) VC10中的C++0x特性 Part 1,2,3 译文打包下载(doc 和 pdf 格式): 点此下载 本文是Part 3。 今天我要讲 decltype ,它让完美转发函数能够返回任意类型的东西。 对编写高度泛型的人来说这是很有趣的的特性。 阅读全文
posted @ 2009-06-05 16:59 飘飘白云 阅读(326) 评论(0) 推荐(0) 编辑
摘要: 这一系列文章介绍Microsoft Visual Studio 2010 中支持的C++ 0x特性,目前有三部分。 Part 1 :介绍了Lambdas, 赋予新意义的auto,以及 static_assert; Part 2( 1 , 2 ):介绍了右值引用(Rvalue References); Part 3 :介绍了表达式类型(decltype) VC10中的C++0x特性 Part 1,2,3 译文打包下载(doc 和 pdf 格式): 点此下载 本文是 Part 2 的第二页。 move 语意:从 lvalue 移动 阅读全文
posted @ 2009-06-03 17:50 飘飘白云 阅读(516) 评论(0) 推荐(0) 编辑
上一页 1 ··· 5 6 7 8 9 10 下一页
本博客遵循 Creative Commons License “署名-非商业用途-保持一致”创作共用协议。 与我联系