题解 | #有序序列合并#

有序序列合并

http://www.nowcoder.com/practice/a9e943b0dab142759807d0cfb6863897

#include <stdio.h>
int main()
{
  int m, n, i, j, k;
  int arr1[1000] = {0};
  int arr2[1000] = {0};
  int arr3[1000] = {0};    //用新数组来记录合并后的序列,初值为0
  scanf("%d %d\n", &m, &n);
  for(i=0; i<m; i++)
    scanf("%d ", &arr1[i]);  //输入第一个有序序列
  for(i=0; i<n; i++)
    scanf("%d ", &arr2[i]);    //输入第二个有序序列
  i = 0, j = 0;   //一定一定要记得重置为0
  while(i<m && j<n)
  {   //两个数组依次出一个数比较,较小的就放到新数组中,
    if(arr1[i] <= arr2[j])
       arr3[k++] = arr1[i++];  //新数组与较小数数组下标均后移一位
    else 
       arr3[k++] = arr2[j++];
  }
  while(i<m)   //第一个数组还有没比较完的数时
         arr3[k++] = arr1[i++];  //直接全部复制到新数组中去
  while(j<n)
         arr3[k++] = arr2[j++];   //同理,若有没比较完的,直接复制过去
  for(i=0; i<m+n; i++)
        printf("%d ", arr3[i]);   //打印新数组元素
  return 0;
}

全部评论

相关推荐

ALEX_BLX:虾皮好像去年秋招就很抽象,根本不知道要人的标准是啥,而且即使hr面完了也有可能泡不出来池子
投递深圳虾皮信息科技有限公司等公司10个岗位
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务