您的位置:首页 > 职场人生

面试题4—相关题目

2017-06-26 10:11 162 查看
题目:有两个排序数组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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: