面试题4—相关题目

来源:互联网 发布:每日流量控制软件 编辑:程序博客网 时间:2024/06/03 09:24

题目:有两个排序数组A1和A2,内存在A1后面有足够的空间容纳A2。实现一个函数,把A2中的数字插入到A1,并且所有的数字是排序的。

代码示例:

#include<iostream>using namespace std;/***两个有序数组A1和A2,A1后面有足够的内存容纳A2,将A2插入到A1中,使结果有序*/bool InsertToA1FromA2(int A1[], int A2[], int n, int m){if (m == 0||(m==0&&n==0))return false;if (n == 0){for (int i = 0; i < m; i++)A1[i] = A2[i];return true;}//int n1 = n - 1;int m1 = m - 1;while (0 <= n1&&m1 >= 0){if (A1[n1] < A2[m1]){A1[m1 + n1 + 1] = A2[m1];m1--;}else if (A1[n1] > A2[m1]){A1[m1 + n1 + 1] = A1[n1];n1--;}else{A1[m1 + n1 + 1] = A1[n1];A1[m1 + n1] = A1[n1];m1--;n1--;}}if (m1 >=0){while (m1 >= 0){A1[m1] = A2[m1];m1--;}}return true;}void main(){const int maxsize = 20;int A1[maxsize] = { 1, 3, 7, 9 };int n = 4;int A2[5] = { 4, 7, 9, 70,567 };int m = 5;bool flag = InsertToA1FromA2(A1, A2, n, m);if (flag){for (int i = 0; i < m + n; i++){cout << A1[i] << "\t";}cout << endl;}}


原创粉丝点击