排序-归并排序(非递归版本)
2016-04-11 18:05
435 查看
归并排序-非递归版
非递归版的归并比递归版的归并效率要高,因为少了函数的递归调用所需要的时间, 这里概念就不多说了
直接给大家代码吧,大家对照书上的概念仔细调试即可,本人参考的是大话数据结构一书
Code:
欢迎指正
非递归版的归并比递归版的归并效率要高,因为少了函数的递归调用所需要的时间, 这里概念就不多说了
直接给大家代码吧,大家对照书上的概念仔细调试即可,本人参考的是大话数据结构一书
Code:
#include //合并 void MergePass(int SR[], int TR[], int s, int n) { int i = 0;//数组从0开始 int j = 0; while (i <= n - 2 * s - 1) { Merge(SR, TR, i, i + s - 1, i + 2 * s - 1); i = i + 2 * s;//加上增量 } if (i < n - s + 1) { Merge(SR, TR, i, i + s - 1, n); } else { for (j = i; j <= n; j++) { TR[j] = SR[j]; } } } //非递归归并 void MergerSort_2(int* L, int length) { int* TR = (int*)malloc(sizeof(int) * length); int k = 1; while (k < length) { MergePass(L, TR, k, length); k = 2 * k; MergePass(TR, L, k, length); k = 2 * k; } } void MergerSort(int* L, int length) { MergerSort_2(L, length - 1);//数组最后一个元素不存在 } //main测试 int main(void) { int x[10] = { 50, 10, 90, 30, 70, 40, 80, 60, 20, 100 }; MergerSort(x, 10);//sort system("pause"); return 0; }
欢迎指正
相关文章推荐
- 判断是否是微信客户端的访问
- 摄像头权限被拒绝导致程序崩溃的问题(6.0以下版本)
- FFmpeg学习笔记003_FFmpeg组件结构分析
- 利用P3P实现跨域
- iOS 离屏渲染的研究(一)
- el表达式跟ognl表达式的区别
- linux常用配置
- 转义字符
- 代替udf的transform
- Google kaptcha 生成验证码图片
- protobuf之c基础
- 供需发展之道
- FFmpeg学习笔记002_VS2013下FFmpeg开发环境的搭建
- GPIO
- android imageView 图片显示方式属性
- python几个轻量级web框架
- 学习Android开发-自定义组合控件
- 分布式缓存Redis使用心得
- 常用的css处理技巧
- mysql数据库-海量数据的存储和访问解决方案(之一)