//给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。
// 说明:
// 初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。
// 你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。
// 示例:
//
// 输入:
//nums1 = [1,2,3,0,0,0], m = 3
//nums2 = [2,5,6], n = 3
//
//输出: [1,2,2,3,5,6]
// Related Topics 数组 双指针
c语言
从后向前依次比较,比把大的放入尾部 要注意如果nums2最后没有比较完时,需要把nums2补到数组里面去
图解//从后往前比较,往最后插
void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n){
int tail = m + n - 1;
m--;
n--;
while (m >= 0 && n >= 0) {
if (nums1[m] >= nums2[n]) nums1[tail--] = nums1[m--];
else nums1[tail--] = nums2[n--];
}
while (n >= 0) {
nums1[tail--] = nums2[n--];
}
}
合并数组,然后在排序
后续学习了几种排序方法在补充