各种排序算法的实现-10(归并排序的实现)
2013-12-30 01:59
267 查看
归并排序实际上也是一种选择排序。 思路相对简单,就不详细的说了 下面是示例代码, 一个很好理解的例子 比如, 14,13, 11, 17,首先准备一个 空间 s,刚好能存 这四个数。 这四个数 首先让14和13比较, 那么第一趟 变成了 13, 14, 和 11, 17. 这个时候 两个子序列已经有序 那么 然后再让13, 和11 找出个大的出来, 那就是11, 再继续 13, 再继续14, 最后就是17. 于是就有序了 11, 13, 14, 17. 本质就是选择排序。具体的算法实现例子如下 , 凡事我写的文章的代码 都是在VC下面编译过 可以之间运行结果的代码 ,都是自己写过验证的。void merge(int src[], int dst[], int low, int mid, int high){int i = low, j = mid + 1, k = low;while (i <= mid && j <= high){if (src[i] <= src[j]){dst[k] = src[i];i++;}else{dst[k] = src[j];j++;}k++;}if (i <= mid){for (int n = i; n<= mid; n++){dst[k++] = src;}}if (j <= high){for (int n = j; j<= high; j++){dst[k++] = src;}}}void m_sort(int src[], int dst[], int low, int high){int temp[100];if (low == high){dst[low] = src[low];}else{int mid = (low + high) / 2;m_sort(src, temp, low, mid);m_sort(src, temp, mid + 1, high);merge(temp, dst, low, mid, high);}}int main(){int a[] = {12, 34, 9, 0, -1, 8, 45, 7, 23, 17};int dst[10];m_sort(a, dst, 0, 9);for (int i = 0; i < 10; i++){printf("%d ", dst[i]);}return 0;}
相关文章推荐
- 对国内游戏产业的无力吐槽
- (转载自http://blog.csdn.net/xiaowei_cqu) opencv特征检测器 FeatureDetector
- [LeetCode] Two Sum
- 让 Spring Framework 依赖 SLF4J 的 Maven 配置
- Mockito学习(zz)
- oracle的sequence出现gap的问题
- 演示:使用NBAR统计与分析流量
- 演示:使用NBAR统计与分析流量 推荐
- Oracle增加表空间大小的四种方法
- 重载与重写的区别
- [转]普通软件项目开发过程规范(五)—— 总结
- CentOS yum一直repoerror解决
- Unity3d通过Action注册事件,回调方法
- 手把手教您Python多线程应用技巧
- 解读Python内存管理机制
- 动态规划解题---数的因式分解
- 一个Python程序员的进化
- 自制Python函数帮助查询小工具
- coding----1wcods----坚持第7天----1152行
- Comparing Xamarin and Delphi XE5 to Xcode for Cross Platform Mobile App Development