二路归并排序
2013-10-10 10:47
337 查看
#include <stdio.h> void MergeArray(int a[],int s,int m,int t) { int i = s; int j = m+1; int tmp[t+1]; int k=0; while(i<=m && j<=t) { if(a[i] <= a[j]) { tmp[k++] = a[i++]; } else { tmp[k++] = a[j++]; } } while(i<=m) { tmp[k++] = a[i++]; } while(j<=t) { tmp[k++] = a[j++]; } for(i=0;i<k;i++) { a[s+i] = tmp[i]; } } void MergeSort(int a[],int s,int t) { if(s<t) { int m = (s+t)/2; MergeSort(a,s,m); MergeSort(a,m+1,t); MergeArray(a,s,m,t); } } void main() { int a[] = {1,9,8,2,0,9,1,5,6}; MergeSort(a,0,8); int i; for(i=0;i<=8;i++) { printf("%d->",a[i]); } }
相关文章推荐
- 二路归并排序
- 二路归并排序
- 二路归并排序及其改进方法
- 微软笔试题 大型文件外部排序(二路归并和k路归并的实现和比较)
- 排序算法大集锦_二路归并排序_2&3(分治思想)
- 二路归并排序及数组中逆序对的计算
- 二路归并排序,利用递归,时间复杂度o(nlgn)
- 归并排序:二路归并
- 二路归并排序,C++代码实现
- 名称:二路归并排序
- 归并排序、二路归并排序
- 两种归并排序算法的实现:二路归并排序和基本归并排序(虚拟消除递归的二路归并排序)
- 数据结构-数组排序-二路归并-循环实现-C语言
- 数据结构 二路归并排序的实现
- 二路归并排序的java实现
- 第五篇:逆向之二路归并排序
- 二路归并排序
- Linux C学习笔记-排序算法6-二路归并排序
- 二路归并排序
- MIT:算法导论——1.算法分析——插入排序 vs 二路归并排序