网站开发培训广西,什么网站专做外贸,系网站建设工作总结,免费推广方法题目#xff1a;
输入有序数组a, b, 不使用排序算法#xff0c;及额外数组#xff0c;按大小顺序合并a, b数组#xff0c;元素不重复#xff1b;
思路#xff1a;
1. 如果比插入的数组大#xff0c;那么往后插入#xff0c;如果继续有大的#xff0c;就移动位置插入…题目
输入有序数组a, b, 不使用排序算法及额外数组按大小顺序合并a, b数组元素不重复
思路
1. 如果比插入的数组大那么往后插入如果继续有大的就移动位置插入
2. 遍历完所有要插入的元素
3. 一个函数专门用于查找可以插入的位置对于重复的数据查找到的未知有可能是重复的那么要跳过
4. 一个函数专门用于插入动作插入方法就是先整体移动位置然后插入
/*
这里一个一个插入是有效率问题的为了程序简单没有处理如果有一批插入元素都在范围内可以整体插入但是实现条件会更多。
*/
代码实现
#include iostream
#include math.h
#include stringusing 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 pos1;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(i0){if(data_array_b[i]data_array_a[j]){insert_element(data_array_a,j1, 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(tmpinput_a_size){coutdata_array_a[tmp]endl;tmp;}return 0;
}