Merge Sorted Array

来源:互联网 发布:粒子滤波slam算法流程 编辑:程序博客网 时间:2024/05/16 16:01

Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array.

Note:

You may assume that nums1 has enough space (size that is greater or equal to m + n) to hold additional elements from nums2. The number of elements initialized in nums1 and nums2 are m and n respectively.

归并排序:思想如果将nums2中元素从头插入到nums1中那么将会有大量元素移动,效率不高。因此从尾部开始插入。


#include<iostream>
#include<vector>
#include<string>
using namespace std;
vector<int> merge(vector<int>& nums1, int m, vector<int>& nums2, int n) 
{
vector<int> tmp(5,0); //原意是nums1能够容纳nums1和nums2合并后的元素。
        int ia = m - 1, ib = n - 1, icur = m + n - 1;
        while(ia >= 0 && ib >= 0)
            tmp[icur--] = nums1[ia] > nums2[ib] ? nums1[ia--] : nums2[ib--];
        while(ib >=0)
            tmp[icur--] = nums2[ib--];
return tmp;
}


int main()
{
vector<int> a,b,res;
a.push_back(2),a.push_back(10);
//cout<<a[0]<<endl<<a[1]<<endl;
b.push_back(1),b.push_back(5),b.push_back(8);
res=merge(a,a.size(),b,b.size());

for(int i=0;i<res.size();i++)
cout<< res[i] <<endl;

return 0;




}

0 0