2012百度实习生笔试之合并两个有序数组

数组al[0,mid-1]al[mid,num-1]是各自有序的,对数组al[0,num-1]的两个子有序段进行merge,得到al[0,num-1]整体有序。要求空间复杂度为O(1)。注:al[i]元素是支持'<'运算符的。

下面的代码不知道有没有符合空间复杂度O(1)的要求,如有错误,望指点。

 

#include "iostream.h"
void sort(int a[],int mid,int lenght)
{
  int temp,i,k;
  for(i=mid;i<=lenght;i++)
  {
     temp=a[i];
     k=i-1;
     while(k>=0&&a[k]>temp)
     {
        a[k+1]=a[k];
        k--;
     }
     a[k+1]=temp;
  }
}


int main(int argc, char* argv[])
{
    int a[11]={1,4,6,7,10,2,3,8,9,15,16};
    sort(a,5,10);
    int i;
    for(i=0;i<11;i++)
        cout<<a[i]<<" ";
    return 0;
}

 

 

 

posted on 2013-03-06 15:10  mrheyao  阅读(176)  评论(0编辑  收藏  举报