


class Solution {
public void merge(int[] nums1, int m, int[] nums2, int n) {
//i是m部分的数组下标
int i = m - 1;
//i是n部分的数组下标
int j = n - 1;
//cur是整个nums1部分的数组
int cur = nums1.length - 1;
//保证nums[2]数组下标不越界
while(j >= 0 ){
//保证i所指向数组下标不越界,判断i和j所指向的数的大小
if(i >= 0 && nums1[i] > nums2[j]){
//把大的数放的cur所指的位置
nums1[cur] = nums1[i];
//cur往前移动
cur--;
//i往前移动
i--;
}else{
//把大的数放的cur所指的位置
nums1[cur] = nums2[j];
//cur往前移动
cur--;
//j往前移动
j--;
}
}
}
}
该博客详细介绍了如何实现归并排序算法,通过双指针技巧将两个已排序的子数组合并到一起,确保整个数组保持有序状态。代码中定义了一个名为`merge`的方法,处理了数组元素的边界条件,确保在遍历过程中不会越界,并始终保持较大的元素在前。
393

被折叠的 条评论
为什么被折叠?



