五种排序算法比较
来源:互联网 发布:知象 编辑:程序博客网 时间:2024/05/01 03:28
目前已学过插入排序,希尔排序,堆排序,归并排序和快速排序,其中希尔排序增量序列的选取和快速排序中枢纽元的选取都会影响算法性能。本例子中希尔排序的增量序列采用的shell建议的,即初始增量为数字长度的一半,下一个增量为前一个增量的一半。(可能不是最好的增量序列)。快速排序枢纽元选用的是三数中值。还是测试200000个数排序时间,这里仅附上主程序:
void main(){srand(time(0));int a[200000];for(int i=0;i<200000;i++)a[i] = rand();DWORD dwGTCBegin, dwGTCEnd; printf("200000个随机数各种排序耗时测试:\n"); dwGTCBegin = GetTickCount(); insertionSort(a, 200000); dwGTCEnd = GetTickCount(); printf("插入排序耗时:%5d毫秒\n", dwGTCEnd - dwGTCBegin);dwGTCBegin = GetTickCount(); shellSort(a, 200000); dwGTCEnd = GetTickCount(); printf("希尔排序耗时:%5d毫秒\n", dwGTCEnd - dwGTCBegin);dwGTCBegin = GetTickCount(); heapSort(a, 200000); dwGTCEnd = GetTickCount(); printf(" 堆排序耗时:%5d毫秒\n", dwGTCEnd - dwGTCBegin);dwGTCBegin = GetTickCount(); mergeSort(a, 200000); dwGTCEnd = GetTickCount(); printf("归并排序耗时:%5d毫秒\n", dwGTCEnd - dwGTCBegin);dwGTCBegin = GetTickCount(); quickSort(a, 200000); dwGTCEnd = GetTickCount(); printf("快速排序耗时:%5d毫秒\n", dwGTCEnd - dwGTCBegin);printf("/*****By moses1213*****/\n");}五种排序算法的耗时:
多次测试果然是快速排序最优,希尔排序其次,插入排序是最低效的。测试中也出现快速排序和希尔排序用时非常接近的情况,可能200000个数还是有点少,但设置再大点的数我的电脑就内存溢出了,不便展示。
0 0
- 五种排序算法比较
- 五种比较高效常用的排序算法
- 五中排序算法性能比较总结
- 排序算法(五):计数排序与非比较排序
- 五种排序算法
- 五种排序算法实现
- 五种排序算法对比
- 五种排序算法对比
- 五种排序算法对比
- 五种排序算法实现
- 8种排序算法比较
- 几种排序算法比较
- 8种排序算法比较
- 几种排序算法比较
- 几种排序算法比较
- 排序算法-比较排序
- C语言排序(五)——插入排序与归并排序算法比较
- 算法---比较排序算法
- PHP目录
- android 监听GPS、蓝牙、数据漫游
- C语言对搜索的简单应用(迷宫问题
- 一个C问题
- json-rpc 2.0规范解读
- 五种排序算法比较
- codeforces--C - Anya and Ghosts(贪心+模拟)
- mysql命令导入\导出表结构或数据
- Windows下配置Git
- 当下高级面试题_你会做几个?
- Eclipse + Python 的安装与配置流程
- Qt的风格化机制
- Android 开发环境的配置
- dom4j解析XML时出现"java.lang.noclassdeffounderror: org/jaxen/jaxenexception"错误