整型数组处理算法(六)合并两个数组
来源:互联网 发布:linux 网桥 问题 编辑:程序博客网 时间:2024/06/06 09:41
给定含有m、n个元素的两个有序(非降序)整型数组a和b。
合并两个数组中的元素到整型数组c,要求去除重复元素并保持c有序(非降序)。
例子如下:
a = 2,3,4,6,8,9
b = 7,9,10
测试代码如下:
测试结果:
合并两个数组中的元素到整型数组c,要求去除重复元素并保持c有序(非降序)。
例子如下:
a = 2,3,4,6,8,9
b = 7,9,10
c = 2,3,4,6,7,8,9,10
实现如下:
// 合并两个含有nA、nB个元素的有序数组void Merge(int *a, int *b, int *c, int nA, int nB, int& nCout){ int i = 0 ; int j = 0 ; int k = 0 ; while (i < nA && j < nB) { if (a[i] < b[j])// 如果a的元素小,则插入a中元素到c { c[k++] = a[i] ; ++i ;nCout++; } else if (a[i] == b[j])// 如果a和b元素相等,则插入二者皆可,这里插入a { c[k++] = a[i] ; ++i ; ++j ;nCout++; } else // a[i] > b[j] // 如果b中元素小,则插入b中元素到c { c[k++] = b[j] ; ++j ;nCout++; } } if (i == nA) // 若a遍历完毕,处理b中剩下的元素 { for (int m = j; m < nB; ++m){ c[k++] = b[m] ;nCout++;} } else//j == n, 若b遍历完毕,处理a中剩下的元素 { for (int m = i; m < nA; ++m){ c[k++] = a[m] ;nCout++;} }}
测试代码如下:
int main(){int* a= new int[6];int* b= new int[3];a[0]=2;a[1]=3;a[2]=4;a[3]=6;a[4]=8;a[5]=9;b[0]=7;b[1]=9;b[2]=10;int nOut = 0;int* output = new int[12];Merge(a, b, output, 6, 3, nOut);for (int i=0; i<nOut; i++){cout << output[i] << "," ;}cout << endl;delete[] a;a=NULL;delete[] b;b=NULL;delete[] output;output=NULL;cout << endl;return 0;}
测试结果:
2,3,4,6,7,8,9,10,
转载请注明原创链接:http://blog.csdn.net/wujunokay/article/details/12114651
- 整型数组处理算法(六)合并两个数组
- 整型数组处理算法(五)求两个有序数组的共同元素
- 将两个整型数组有序合并成一个数组
- 算法--合并两个有序数组
- 整型数组处理算法(一)按照正态分布来排列整型数组元素
- 整型数组处理算法(七)重排问题
- 【华为oj】整型数组合并
- 【华为 OJ】 整型数组合并
- 华为oj--整型数组合并
- 两个有序数组的合并算法
- 算法:两个有序数组的合并
- C++算法之 合并两个数组
- C++算法之 合并两个数组
- 整型数组处理算法(四)求数组的最大值和最小值
- 整型数组处理算法(三)把一个数组里的所有元素,插入到另一个数组的指定位置
- 合并两个数组
- 两个数组合并
- 合并两个有序数组
- vc6.0生成ocx,然后使用js调用
- Android反编译最新版本
- 【python】【学习】今天学习了部分python的基础,和大家分享一下
- CF round#202 A (13.09.28)
- 44-首字下沉效果的设置
- 整型数组处理算法(六)合并两个数组
- 宝贵财富
- Android使用多个Intent进行Activity跳转,如何直接退出系统
- win音视频--qt视频显示
- vim windows
- POJ1873+几何凸包
- 约瑟夫环的推导
- uva 11549 - Calculator Conundrum 模拟
- 今天刚开通!