2012年百度校园实习招聘题目及解答(一)

题目

5、算法题2
数组al[0,mid-1] 和 al[mid,num-1],都分别有序。将其merge成有序数组al[0,num-1],要求空间复杂度O(1)


我的实现:

将从前半段移除的值,用插入排序插入到后半段数组中,保持有序,这样将前半部分排序完,就这个数组有序了

 

可以运行的程序地址和word文档:http://download.csdn.net/detail/cq20110310/5196158


希望共同讨论,会不断的发笔试和面试的题目及答案,希望大家支持

 

void test_merge(int a[],int num,int mid)

{

	int i=0;

	int j=mid;

	int temp;



	while (i<mid)

	{

		if (a[i]<=a[mid])

		{

			i++;

		



		}

		else

		{

			temp=a[i];

			a[i]=a[mid];

			//将从前半段移除的值,用插入排序插入到后半段数组中,保持有序,这样将前半部分排序完,就这个数组有序了



			for (j=mid+1;j<num;j++)

			{

				

				if (temp <=a[j] )

				{

					a[j-1]=temp;



					break;

				}

				else

				{

					a[j-1]=a[j];

				}



				if (j==num-1)

				{

					a[j]=temp;



					break;

				}

			}

			i++;

		}

	}



}


你可能感兴趣的:(2012)