合并两升序数组称为一个升序数组算法
2017-09-27 22:12
99 查看
这个算法时间复杂度为O(max{m,n})
/* *测试A,B两升序数列,合并为C的最优时间复杂度算法 */ #include <iostream> #include <stdlib.h> using namespace std; typedef int ElemType; typedef struct NewArr{ ElemType *data; int length; }NewArr; void print(NewArr arr) { cout<<"Arr:"; for(int i = 0; i < arr.length; i++) { cout<<arr.data[i]<<" "; } cout<<endl; } void merge_B(NewArr arrA, NewArr arrB, NewArr &arrC) { arrC.length = arrA.length + arrB.length; arrC.data = new ElemType[arrC.length]; int i = 0,j = 0,k = 0; while(i<arrA.length && j<arrB.length) { if(arrA.data[i] >arrB.data[j]) arrC.data[k++] = arrB.data[j++]; else arrC.data[k++] = arrA.data[i++]; } while(i<arrA.length) arrC.data[k++] = arrA.data[i++]; while(j<arrB.length) arrC.data[k++] = arrB.data[j++]; } void Init(NewArr &arrA, NewArr &arrB) { int temp; cout<<"请为Arr_a赋值:"; for(int i = 0; i < arrA.length; i++) { cin>>temp; arrA.data[i] = temp; } cout<<"请为Arr_b赋值:"; for(int i = 0; i < arrB.length; i++) { cin>>temp; arrB.data[i] = temp; } } int main() { NewArr arr_a, arr_b, arr_c; arr_a.length = 5; arr_b.length = 5; arr_a.data = new ElemType[arr_a.length]; arr_b.data = new ElemType[arr_b.length]; Init(arr_a,arr_b); merge_B(arr_a,arr_b,arr_c); print(arr_a); print(arr_b); print(arr_c); return 0; }
相关文章推荐
- 面试题:两个无序数组合并成一个有序数组
- 两个有序数组合并为一个有序数组
- 两个数组合并到一个数组
- 两升序数组合并成一个升序数组
- [c语言]将两个整形升序数组合并为一个升序数组
- 合并有序的两个数字数组为一个
- 将两个排好序的序列合并成一个(指针和数组分别实现)
- PHP中合并数组的一个简单方法
- JS实现合并两个数组并去除重复项只留一个的方法
- 如何合并两个数组为一个数组,并且排序。
- 合并两个有序数组为一个有序数组
- 数组合并3个一维数组合并成一个新的二维数组
- 对N个数组进行操作。先把这N个一维数组合并成一个2为数组;然后进行操作
- Python将两个数组合并成一个数组,多维数组变成一维数组
- 合并两个有序数组为一个有序数组
- 把已知两数组合并成一个新数组中并遍历新数组
- 将两个数组A和B合并为一个有序的C数组
- 将两个数组合并为一个数组并排序
- 合并两个二叉排序树(二叉查找树)到一个数组中
- php下将多个数组合并成一个数组的方法与实例代码