【算法】归并--实现归并排序非递归算法
来源:互联网 发布:天猫美工培训 编辑:程序博客网 时间:2024/06/11 00:10
#include <stdio.h>#define M 5void Merge(int r[],int r1,int s,int m,int t);void MergePass(int r[],int r1[],int n,int h);void MergeSort2(int r[],int r1[],int n);int main(){ int i; int r[M]; int r1[M]; for(i = 0; i < M; i ++) { scanf("%d",&r[i]); } MergeSort2(r,r1,M-1); for(i = 0; i < M; i ++) { printf("%d/n",r[i]); } return 0;}void Merge(int r[],int r1[],int s,int m,int t){ int i; int j; int k; i = s; j = m + 1; k = s; while(i <= m && j <= t) { if(r[i] < r[j]) { r1[k] = r[i]; k ++; i ++; } else { r1[k] = r[j]; k ++; j ++; } } if(i <= m) { while(i <= m) { r1[k] = r[i]; k ++; i ++; } } else { while(j <= t) { r1[k] = r[j]; k ++; j ++; } }}void MergePass(int r[],int r1[],int n,int h){ int i; int k; i = 0; while(i <= n - 2*h + 1) { Merge(r,r1,i,i + h - 1,i + 2*h - 1); i += 2*h; } if(i < n - h + 1) { Merge(r,r1,i,i + h - 1,n); } else { for(k = i; k <= n; k ++) { r1[k] = r[k]; } }}void MergeSort2(int r[],int r1[],int n){ int h = 1; while(h <= n) { MergePass(r,r1,n,h); h = 2 * h; MergePass(r1,r,n,h); h = 2 * h; }}
- 【算法】归并--实现归并排序非递归算法
- 非递归实现归并排序算法
- 归并排序非递归算法
- 归并排序算法(递归实现)
- 归并排序算法(递归实现)
- 算法积累<2>归并排序非递归的实现
- 归并排序之非递归算法
- 归并排序(非递归算法)
- 归并排序的非递归算法
- 归并排序(非递归算法)
- 归并排序(mergeSort)之非递归算法
- 归并排序递归算法
- 【算法】归并--C语言实现归并排序递归算法
- 归并算法的非递归实现
- 归并排序算法 递归及循环实现
- 非递归实现归并排序
- 非递归实现归并排序
- 归并排序非递归实现
- 接口(C# 参考)
- e-r概念模型
- 试玩drizzle
- 关于连接的认识
- 网线
- 【算法】归并--实现归并排序非递归算法
- 误差、权值、偏差的变化情况
- GCC 4.5.0 & GMP 5.0.1 的安装问题一例
- Microsoft SQL Server 2005 整合、集成SP3方法
- 又听到“曾经的你”了,那个时候的许巍,真是神了。
- “无法找到运行搜索助理需要的一个文件”的解决办法
- 【算法】归并--C语言实现归并排序递归算法
- SQL Server 数据库移植后不能执行大数据量查询 解决方法
- 各种语言的Hello World程序