//原文:
//
// You are given two sorted arrays, A and B, and A has a large enough buffer at the end to hold B. Write a method to merge B into A in sorted order.
//
// 译文:
//
// A和B是两个有序数组(假设为递增序列),而且A的长度足以放下A和B中所有的元素, 写一个函数将数组B融入数组A,并使其有序。
#include <iostream>
using namespace std;
void mswap(int &a, int &b)
{
a = a^b;
b = a^b;
a = a^b;
}
void merge(int *a, int asize, int *b, int bsize)
{
int ka= asize - 1;
int kab = asize + bsize - 1;
for (int kb = bsize - 1; kb >-1; kb--)
{
while (b[kb] < a[ka])
{
a[kab] = a[ka];
kab--;
ka--;
}
a[kab] = b[kb];
kab--;
}
}
int main()
{
int a[20] = {4,5,9,11,14,22,33,34};
int b[5] = {1,3,7,10,12};
merge(a, 8, b, 5);
for (int i = 0;i <13; i++)
{
cout<<a[i]<<" ";
}
}
Cracking The Coding Interview 9.1
最新推荐文章于 2017-08-29 17:19:46 发布