写在前面
今天我们继续来学习一道难度定义为简单层次的LeetCode算法题:合并两个有序数组;欢迎大家关注我的专栏。
本道题主要是考察排序算法的熟练使用。
题目解读
我对本道题的解读主要还是侧重于排序算法,题目的描述说了很多,总结下来,其实就是将一个数组合并到另外一个数组当中。
并且将合并后的数组元素进行排序。
这里我是先将数组nums1和nums2进行无差别合并到nums1数组中。
然后针对nums1进行排序。
没有什么新颖的办法,只是使用了冒泡排序法。
当然了,也可以不选择两步操作,直接一步到位也是可以做到的。
通过每次的对比,来确定最后的元素值的确切位置。
代码实现
public class Solution { public static void main(String[] args) { Solution solution = new Solution(); solution.merge(new int[]{1, 2, 3, 0, 0, 0}, 3, new int[]{2, 5, 6}, 3); } public void merge(int[] nums1, int m, int[] nums2, int n) { for (int i = 0; i != n; ++i) { nums1[m + i] = nums2[i]; } for (int i = 0; i < nums1.length; i++) { for (int j = i + 1; j < nums1.length; j++) { if (nums1[i] > nums1[j]) { int temp = nums1[i]; nums1[i] = nums1[j]; nums1[j] = temp; } } } for (int a : nums1) { System.out.println(a); } } }
执行结果:
冒泡排序的效率还行吧,但是还有待提高。
其他思路
直接使用Java中的Arrays.sort方法进行排序,果然效率排名老差了。
总结
这道题,要执行成功太容易了,java的话就只是一个方法便能解决了,但是要想要自己去实现一次,也只能利用元素移位的概念来处理,或者是使用各种排序算法来解决此问题。