题目描述:java
给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。 说明: 初始化 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]
问题分析:web
数组长度不用考虑,两种方法 1,插入后,使用 Arrays.sort() 进行合并排序 2,插入时进行排序
代码展现(已验证):算法
//leetcode-java class Solution { public void merge(int[] nums1, int m, int[] nums2, int n) {
第一种方法,使用Arrays.sort() 进行排序数组
// 第一种方法,使用Arrays.sort() 进行排序 int j=0; for(int i=m; i<m+n;i++) { nums1[i] = nums2[j]; j++; } Arrays.sort(nums1);
第二种方法 插入时进行排序svg
// 第二种方法 插入时进行排序 if(n<1) return; //从后往前插入 for(int i=m+n-1;(m>0&&n>0);i--) { if(nums1[m-1]>nums2[n-1]) { nums1[i] = nums1[m-1]; m--; } else { nums1[i] = nums2[n-1]; n--; } } //剩余元素放入 if(m==0) { for(int i=0;i<n;i++) { nums1[i] = nums2[i]; } } } }
泡泡:spa
排序问题应该是提炼出来的问题点,排序的基本算法有10种,分为比较类排序,非比较类排序 比较类排序 -冒泡排序 -快速排序 -简单插入排序 -希尔排序 -简单选择排序 -堆排序 -归并排序 非比较类排序 -计数排序 -桶排序 -基数排序 排序是很重要的问题,之后须要梳理一下。