java中怎么合并两个数组 简单明了的
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中怎么合并两个数组 简单明了的相关的知识,希望对你有一定的参考价值。
我学的是基础 公式没学过 简单一点的
int[] arr1 = 1,2,3,4,11;int[] arr2 = 6,7,8,9,10;
int newLength = arr1.length + arr2.length;
int[] arr_target = new int[newLength];
//参数:源数组,源数组起始位置,目标数组,目标数组起始位置,复制长度
System.arraycopy(arr1, 0, arr_target, 0, arr1.length);
System.arraycopy(arr2, 0, arr_target, arr1.length, arr2.length);
//输出合并后数组
for (int i : arr_target)
System.out.println(i);
//排序
Arrays.sort(arr_target);
//输出排序数组
for (int i : arr_target)
System.out.println(i);
//逆序
int[] arr_reverse = new int[newLength];
int flag = 0;
for (int i : arr_target)
arr_reverse[newLength - flag - 1] = i;
flag++;
//输出逆序数组
for (int i : arr_reverse)
System.out.println(i);
数组合并不一定非得遍历
具体的输出题主自己再修改吧
参考技术A public static void main(String[] args)int [] a=10,20,30;
int [] b=40,50,60;
int [] c = new int[a.length+b.length];
for(int i=0;i<a.length+b.length;i++)
if(i<a.length)
c[i]=a[i];
else
c[i]=b[i-a.length];
for(int i =0 ;i<c.length;i++)
System.out.print(c[i]+" ");
System.out.println();
System.out.print("逆序后(冒泡排序):");
int temp;
for(int i=0 ;i<c.length-1;i++)
for(int j=i;j<c.length;j++)
if(c[j]>c[i])
temp = c[i];
c[i] = c[j];
c[j] = temp;
for(int i =0 ;i<c.length;i++)
System.out.print(c[i]+" ");
参考技术B 先用循环,将2个数组合并起来。然后用冒泡排序。
LeetCode88-简单-合并两个有序数组
思路:
首先思考,如果一个指针指nums1,一个指针指nums2;他俩开始比,大的放nums1,就会产生覆盖。那该怎么去做呢??
方法1:重开一个m+n大的数组....
方法2:(更好的方法)从后往前比较!
考虑两种情况 ————( 画图推一遍 )
AC代码:
//时间复杂度是O(N)
//空间复杂度是O(1)
void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n)
int end1 = m-1,end2 = n-1;
int end = m+n-1;
while(end1 >= 0 && end2 >= 0)
if(nums1[end1] > nums2[end2])
nums1[end--] = nums1[end1--];
else
nums1[end--] = nums2[end2--];
while(end2 >= 0)
nums1[end--] = nums2[end2--];
以上是关于java中怎么合并两个数组 简单明了的的主要内容,如果未能解决你的问题,请参考以下文章