合并两个有序数组
一、题目
给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。
初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。你可以假设 nums1 的空间大小等于 m + n,这样它就有足够的空间保存来自 nums2 的元素。
二、解题思路:
第一种办法:
将第二个数组添加到第一个数组中,然后对其排序。
第二种办法:
第二个数组中的元素和第一个的依次比较,小的放前面,大的放后面,一次循环直接over。(只是思路,目前还没实现)
三、代码和结果:
class Solution {
public:
void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
int i,j,t,k;
for(i =m,j=0;i<m+n;i++,j++){
nums1[i]=nums2[j];//把数组nums2添加到1的末尾
}
for(i=1;i<nums1.size();i++){
//对添加好数组2的1数组进行排序插入排序
t=nums1[i];k=i-1;
while(nums1[k]>t){
nums1[k+1]=nums1[k];k--;
if(k==-1)break;
}
nums1[k+1]=t;
}
}
};
结果:
至此,over~