合并两个数组

  当初微软实习生面试终面第四个,算法很简单。

     首先对两个数组进行快排,然后从尾部开始合并两个数组。

     

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];
}

  

posted @ 2012-06-24 18:27  桥边红药  Views(180)  Comments(0)    收藏  举报