合并两个数组
当初微软实习生面试终面第四个,算法很简单。
首先对两个数组进行快排,然后从尾部开始合并两个数组。
void MergeArrays(int *a, int *b, int *c, int size_a, int size_b){
int p1 = size_a - 1;
int p2 = size_b - 1;
int p3 = size_a + size_b - 1;
while( p1 >= 0 && p2 >= 0){
if(a[p1] < b[p2])
c[p3--] = b[p2--];
else
c[p3--] = a[p1--];
}
if( p1 >= 0)
for(; p1 >= 0; p1--)
c[p3--] = a[p1];
if( p2 >= 0)
for(; p2 >= 0; p2--)
c[p3--] = b[p2];
}


浙公网安备 33010602011771号