排序算法实践
来源:互联网 发布:周秀云 知乎 编辑:程序博客网 时间:2024/05/03 14:16
那天阅读《代码之美》这本书的章节,写个程序试试其中的排序算法的例子,运行成功后,突然想试试和VC9自带的 STL sort函数比较一下,测试结果出乎我所料,这个例子比STL 的sort函数一般快上3~4倍之多,觉得很是奇怪,检查了一下,发现应该是debug版的原因,切换到release版再测,对于小数据STL 的sort要快很多,但是碰到大数据量(千万级别的数据)的时候,这个例子有的时候反到要快不少。难道真的如《程序设计实践》里所说的那样“STL作为C++ 的一个新部分,仍然受到不成熟实现的损害。。。”对于VC STL我以前做文件夹同步功能的时候过一些研究,我当时用的是VC6,不像SGI STL sort为保证其最差速度是也是logn而采用的是混合排序法(快速排序,插入排序,堆排序),它的sort函数用的就是快速排序算法。照理说应该和这里例子函数速度差不多。带着疑问,我打开<<algorithm>文件中查看其中的的sort函数代码,结果发现VC9也已经与时俱进,其中sort函数用的也是如同SGI STL一样的混合排序法,当分割数据次数过多的时候(allow 1.5 log2(N) divisions),使用堆排序或者插入排序算法。这样的话能够避免最差速度为n*n,但是鱼和熊掌不可兼得,一般情况下肯定会影响到排序速度(快速排序算法一般会比堆排序或者插入排序算法要快)。就向候捷曾经说过的”源码之前,了无秘密“。以下附上例子代码以及vc9sort代码。
例子代码:
vc9sort代码:
- 排序算法实践
- 排序算法实践
- 常见排序算法实践
- 排序算法实践-堆排序
- 各常见排序算法实践
- 算法实践篇-插入排序
- 算法实践篇-合并排序
- 算法实践篇-冒泡排序
- 算法实践篇-堆排序
- 算法实践篇-快速排序
- 算法实践篇-计数排序
- 数据结构&算法实践—【排序|交换排序】鸡尾酒排序
- 数据结构&算法实践—【排序|交换排序】奇偶排序
- 数据结构&算法实践—【排序|交换排序】梳子排序
- 数据结构&算法实践—【排序|交换排序】Bogo排序
- 数据结构&算法实践—【排序|选择排序】选择排序
- 数据结构&算法实践—【排序|选择排序】堆排序
- 数据结构&算法实践—【排序|插入排序】插入排序
- 解决iis默认占用全部ip的80端口问题
- OpenMP知识
- VB.NET/C# and JavaScript communication
- 从一则笑话里分析需求的缺陷
- ASP.NET中"委托"(delegate)的使用简单实例
- 排序算法实践
- 一个table tr.hover的实例
- 不好搜的C语言用法
- CRC校验
- 泛型dao的设计
- Xerces C++ 学习笔记
- 物价上涨似成局 五金市场静待何时
- (转) C++虚函数表解析
- Eucalyptus分析三 lock