引用 qsort与sort的比较
引用
linpder 的
qsort与sort的比较
在C/C++标准库中提供了快速排序的函数qsort();在STL中也提供了sort()排序函数,那么这两个函数哪个快呢?之前与代码->诗(hotman_x)交流了封装排序算法的看法,他告诉我sort要比qsort快,为此我专门做了一番验证。
取int类型的数据进行排序,对数据规模为1000,10000,100000的数据集分别在VC6.0(Debug and Release模式),Dev C++(集成GCC/G++编译器的IDE工具)和CodeBlock(一个开源的C/C++ IDE编译工具)进行了比较,得到如下结果:
一 VC Debug模式下
1)数据规模为1000

2)数据规模为10000

3)数据规模为100000

二 VC Release模式下
1)数据规模为1000

2)数据规模为10000

3)数据规模为100000

三 Dev C++工具下
1)数据规模为1000

2)数据规模为10000

3)数据规模为100000

四 CodeBlock工具下
1)数据规模为1000

2)数据规模为10000

3)数据规模为100000

从以上的结果中不难看出,同样的数据规模,在VC下qsort排序算法需要的时间是sort的2倍以上(看来代码->诗(hotman_x)说的没错:P)。两者都是“快速排序”,但qsort采用的不是简单的快速排序,而是结合内插排序算法,并且编译器根据运行平台作了一定的优化,可以保证很好的平均性能。在DEV
C++和CodeBlock下,编译器不会对代码作任何的优化,qsort反而要比sort快不少!在这两个平台下的运行速度应该是比较客观地反应出qsort和sort的快慢!相信在linux/unix下qsort要比sort快(有测试平台的朋友可以试试)。
验证代码如下,代码中用到了一个自己写的精确计时类:
| #include <iostream> #include <vector> #include <algorithm> #include "MyTimer.h" #include <stdlib.h> using namespace std; const int C_Size = 100000; int Compare(const void *a,const void *b) int main() cout << "排序规模为:" << C_Size << endl; for(i=0;i<C_Size;i++) mt.Reset(); return 0; |
引用 qsort与sort的比较的更多相关文章
- qsort与sort
快排是我们平常敲代码和比赛的时候 经常使用到的方法 qsort是函数库中自带的函数 这是一个标准的快排函数 而sort比qsort更是好用 sort对于不同大小的数组 会使用不 ...
- qsort 与sort 对结构体排序实例
qsort 与sort 对结构体排序实例 #include<bits/stdc++.h> using namespace std; typedef struct { string book ...
- (转)qsort和sort
1.qsort函数: 原 型: void qsort(void *base, int nelem, int width, int (*fcmp)(const void *,const void *)) ...
- qsort和sort
sort()函数是C++中的排序函数其头文件为:#include<algorithm>头文件: qsort()是C中的排序函数,其头文件为:#include<stdlib.h> ...
- qsort()与sort的用法(收藏)
sort()函数是C++中的排序函数其头文件为:#include<algorithm>头文件: qsort()是C中的排序函数,其头文件为:#include<stdlib.h> ...
- C/C++中qsort()以及sort()的用法
最近学弟们问快速排序的比较多,今天自己就做一下总结,快速排序在库函数里面有现成的,不用自己实现,调用一下就可以达到自己想要的结果,掌握以后就可以完全摒弃冒泡和选择了,并且时间复杂度也从O(n*n)提升 ...
- STL中排序函数的用法(Qsort,Sort,Stable_sort,Partial_sort,List::sort)
都知道排序很重要,也学了各式各样的排序算法,冒泡.插入.归并等等,但其实在ACM比赛中,只要不是太慢的算法,都可以适用(除非某些题目卡时间卡的很死),这个时候,速度与技巧便成了关键,而在C++的标准库 ...
- qsort和sort学习与比较
阅读另一篇博文Uva 642 - Word Amalgamation sort qsort 1.qsort函数: 原 型: void qsort(void *base, int nelem, int ...
- qsort函数、sort函数【转】
http://blog.163.com/yuhua_kui/blog/static/9679964420142195442766/ 先说明一下:qsort和sort,只能对连续内存的数据进行排序,像链 ...
随机推荐
- layui-字体图标
layui官网下载:GitHub:https://github.com/sentsin/layui/ layui官网首页-下载:http://www.layui.com/ layui-字体图标-官方网 ...
- Matlab 绘图全方位分析及源码
Matlab绘图 强大的绘图功能是Matlab的特点之一,Matlab提供了一系列的绘图函数,用户不需要过多的考虑绘图的细节,只需要给出一些基本参数就能得到所需图形,这类函数称为高层绘图函数.此外,M ...
- Sping Boot入门到实战之实战篇(二):一些常用功能的Spring Boot Starters
包含功能 阿里云消息服务MNS 阿里云消息队列服务(即时消息.延迟消息.事务消息) AOP日志 基于MyBatis通用Mapper及DRUID的数据库访问 dubbo支持 错误处理 七牛图片服务 re ...
- java wait 和notify的用法
package com.test; public class OutputThread implements Runnable { private int num; private Object lo ...
- mongodb的IO测试工具 mongoperf
之前没发现mongoperf这个工具,测试IO的状态用的是iostat来进行观察. mongoperf < myjsonconfigfile echo "{nThreads:2,fi ...
- WebRTC for android ios开发官方指南
The WebRTC native code package can be found at: https://chromium.googlesource.com/external/webrtc ht ...
- [Python]xlrd 读取excel 日期类型2种方式
有个excle表格须要做一些过滤然后写入数据库中,可是日期类型的cell取出来是个数字,于是查询了下解决的办法. 主要的代码结构 data = xlrd.open_workbook(EXCEL_PAT ...
- 【转】win7 任务计划 任务映像已损坏或篡改(异常来自HRESULT:0x80041321)
请这样操作:1. 以管理员身份运行命令提示符并执行命令chcp 437schtasks /query /v | find /i "ERROR: Task cannot be loaded:& ...
- php eval()计算
php中的eval()函数可以处理php代码,因此可以用此来解决:以字符串格式存储的计算公式 比如: $str='2*(3+12)'; $s=eval("return $str;" ...
- 【BZOJ4453】cys就是要拿英魂! 后缀数组+单调栈+set
[BZOJ4453]cys就是要拿英魂! Description pps又开始dota视频直播了!一群每天被pps虐的蒟蒻决定学习pps的操作技术,他们把pps在这局放的技能记录了下来,每个技能用一个 ...