持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第4天,点击查看活动详情
写在前面
今天我们继续来学习一道难度定义为简单层次的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的话就只是一个方法便能解决了,但是要想要自己去实现一次,也只能利用元素移位的概念来处理,或者是使用各种排序算法来解决此问题。