public class ArrayUnion{
private int[] firstIntRsArray;//第一个源数组
private int[] secondIntRsArray;//第二个源数组
private int[] dsIntArray; //目的数组
//构造函数初始化
public ArrayUnion(){
firstIntRsArray=new int[]{10,32,56,32,76,89,67,45,7,6,21,34};
secondIntRsArray=new int[]{76,89,54,2,12,65,7};
}
//输出排序好的目的数组
public void display(){
for(int i=0;i<dsIntArray.length;i++){
System.out.print(dsIntArray[i]+",");
}
}
//合并
public void unionArray(){
dsIntArray=new int[firstIntRsArray.length+secondIntRsArray.length];
Arrays.sort(firstIntRsArray);
Arrays.sort(secondIntRsArray);
int k=0;//第二个源数组基数下标
int n=0;//目的数组下标
for(int i=0;i<firstIntRsArray.length;i++){
for(int j=k;j<secondIntRsArray.length;j++){
if(k==secondIntRsArray.length-1) break;//已经到了第二个源数组的结尾,j不能在++,否则越界
if(firstIntRsArray[i]<secondIntRsArray[k]){
//第一个数组中最小的值直接插入目的数组
dsIntArray[n++]=firstIntRsArray[i] ;
break;
}else{
if(firstIntRsArray[i]<secondIntRsArray[j]){
k=j;//下标基数移动
dsIntArray[n++] = firstIntRsArray[i];
break;
}else{
dsIntArray[n++]=secondIntRsArray[j];
}
}//end if
}//end for
//第二个源数组结束,第一个源数据有剩余
if(k==secondIntRsArray.length-1){
dsIntArray[n++]=firstIntRsArray[i];
}
}//end for
//第一个源数组结束,第二个源数组有剩余
if(k<secondIntRsArray.length-1){
for(int temp=k;temp<secondIntRsArray.length;temp++){
dsIntArray[n++]=secondIntRsArray[temp];
}
}
}//end unionArray
//主调函数
public static void main(String []args){
ArrayUnion au=new ArrayUnion();
au.unionArray();
au.display();
}
}//ArrayUnion
数据结构数组(1)
最新推荐文章于 2024-08-13 11:55:15 发布