思路:
-
如果比插入的数组大,那么往后插入,如果继续有大的,就移动位置插入;
-
遍历完所有要插入的元素;
-
一个函数专门用于查找可以插入的位置,对于重复的数据,查找到的未知有可能是重复的,那么要跳过;
-
一个函数专门用于插入动作,插入方法就是先整体移动位置,然后插入;
/*
这里一个一个插入是有效率问题的,为了程序简单,没有处理,如果有一批插入元素都在范围内,可以整体插入,但是实现条件会更多。
*/
cpp
#include <iostream>
#include <math.h>
#include <string>
using namespace std;
int data_array_a[MAX_ARRAY_SIZE]={1,2,3,0,0,0};
int data_array_b[MAX_ARRAY_SIZE]={2,5,6};
void insert_element(int *array_a, int pos, int *a_length, int element)
{
int tmp = 0;
int i = pos+1;
int j = *a_length;
for(i = 0; i<(*a_length - pos); i++)
{
array_a[j] = array_a[j-1];
j--;
}
(*a_length)++;
array_a[pos] = element;
}
int find_position(int *array_a, int end_index, int element)
{
while(array_a[end_index]>element)
{
end_index--;
}
return end_index;
}
int main()
{
int input_a_size = 3;
int input_b_size = 3;
int j = input_a_size -1;
int i = input_b_size -1;
int pos = 0;
int tmp = 0;
while(i>=0){
if(data_array_b[i]>data_array_a[j])
{
insert_element(data_array_a,j+1, &input_a_size, data_array_b[i]);
}
else
{
pos = find_position(data_array_a, j,data_array_b[i]);
if(data_array_a[pos] != data_array_b[i])
{
insert_element(data_array_a, pos,&input_a_size, data_array_b[i]);
}
j = pos;
}
i--;
}
while(tmp<input_a_size)
{
cout<<data_array_a[tmp]<<endl;
tmp++;
}
return 0;
}