归并之将两个有序数组合并(已测试)
2015-07-23 12:35
288 查看
#include<stdio.h> #include<stdlib.h> //归并作用是将两个序列合并 L = 左边起始位置,R = 右边起始位置 RightEnd = 右边终点位置 void Merge(int A[],int TmpA[],int L,int R,int RightEnd) { int LeftEnd = R -1; //左边终点位置 左右两列挨着 int Tmp = L; //存放结果初始位置 int NumElements = RightEnd - L + 1; //存放元素总个数 while(L <= LeftEnd && R<= RightEnd) //当左右两边都存在元素时比较大小将小的哪一个存入数组Tmp中 { if(A[L] <A[R] ) //如果左边的值小则将左边的元素存入数组中 TmpA[Tmp++] = A[L++]; else //反之 TmpA[Tmp++] = A[R++]; } while(L <= LeftEnd) //如果左边的数组长一点则将后面的直接存入数组 TmpA[Tmp++] = A[L++]; while(R <= RightEnd) TmpA[Tmp++] = A[R++]; //反之 for(int i = 0; i < NumElements;i++,RightEnd --) //用NumElem来控制赋值的次数 A[RightEnd] = TmpA[RightEnd]; } void main() { int a[11] = {1,3,5,7,9,2,4,6,8,10,20}; int b[11] = {0}; Merge(a,b,0,5,9); for(int i=0;i<11;i++) { printf("%d\n",a[i]); } getchar(); }
相关文章推荐
- Maximal Square
- M - 小希的迷宫
- Count Complete Tree Nodes
- 基于韦伯特征的非结构化道路检测
- Delphi 中的哈希表: THashedStringList
- Cocos2dx-Mac下的环境配置
- Rectangle Area
- strtok的基本用法
- Android架构实战(二)—— RxJava
- Implement Stack using Queues
- Basic Calculator
- 内网DNS
- python的unittest测试框架的扩展浅谈
- Invert Binary Tree
- 使用bundle插件管理器添加vim插件
- 节约内存:Instagram的Redis实践
- java基础入门-建立简单的ServerSocket
- Cocos2dx-C++和Lua数据通讯
- Basic Calculator II
- Summary Ranges