1. 数组的合并且排序
问题描述:现在给出两个数组 数组 A :“ 1, 7, 9, 11, 13, 15, 17, 19; 数组 B :“ 2, 4, 6, 8, 9, 10” 两个数组合并为数组 C, 按升序排列
代码实现:
import java.util.Arrays;
public class MergeSort {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] A=new int[]{1,7,9,11,13,15,17,19};
int[] B=new int[]{2,4,6,8,9,10};
int[] C=new int[A.length+B.length];
int indexA=0,indexB=0,indexC=0;
while(indexA<A.length && indexB<B.length){
if(A[indexA]<B[indexB]){
C[indexC]=A[indexA];
indexA++;
indexC++;
}else if(A[indexA]==B[indexB]){ //相等时考虑将数组 A 和 B 的元素都加进新的数组
C[indexC]=A[indexA];
indexA++;
indexC++;
C[indexC]=B[indexB];
indexC++;
indexB++;
}else{
C[indexC]=B[indexB];
indexB++;
indexC++;
}
}
//下面考虑B 数组的元素全部添加到新数组C,A还没添加完 时 继续添加A
while(indexA<A.length){
C[indexC]=A[indexA];
indexA++;
indexC++;
}
//下面考虑 A数组的元素全部添加到新数组C,B 还没添加完 时 继续添加 B
while(indexB<B.length){
C[indexC]=B[indexB];
indexB++;
indexC++;
}
System.out.print("新的数组:"+Arrays.toString(C));
}
}
2. 数组的拷贝
直接上代码:使用字符数组为例 包含三种方法
import java.util.Arrays;
public class ShuZuCopy {
public static void main(String[] args) {
// TODO Auto-generated method stub
char[] arr=new char[]{'1','6','2','3','9','4','5','7','8'};
char[] brr=Copy1(arr);
char[] crr=Copy2(arr);
char[] drr=Copy3(arr);
System.out.print("方法一的结果:");
System.out.print(Arrays.toString(brr));
System.out.println();
System.out.print("方法二的结果:");
System.out.print(Arrays.toString(crr));
System.out.println();
System.out.print("方法三的结果:");
System.out.print(Arrays.toString(drr));
}
//for循环实现数组的拷贝
public static char[] Copy1(char[] arr){
char[] brr=new char[arr.length];
int aindex=0,bindex=0;
while(aindex<arr.length && bindex<brr.length){
brr[bindex]=arr[aindex];
bindex++;
aindex++;
}
return brr;
}
// 使用 clone()方法实现数组的拷贝
public static char[] Copy2(char[] arr){
char[] crr=new char[arr.length];
crr=arr.clone();
return crr;
}
//使用 Arrays 类的 copyOf() 方法实现数组的拷贝
public static char[] Copy3(char[] arr){
char[] drr=new char[arr.length];
drr=Arrays.copyOf(arr,arr.length);
return drr;
}
}