两个数组合并排序的java实现
本文主要描述了两个数组的合并排序,并用Java代码进行实现的两种方法
- 方法一
用于合并两个有序数组,默认升序
package com.cyl.day05;
/**
* 数组A:“1,7,9,11,13,15,17,19”;
* 数组b:“2,4,6,8,10” ;
* 两个数组合并为数组c,按升序排列。
* @author CLY
*
*/
public class MergeSort {
public static void main(String[] args) {
int[] a= {1,7,9,11,13,15,17,19};
int[] b = {2,4,6,8,10};
//调用printArray方法,并将merge方法的返回值传给printArray
printArray(merge(a, b));
}
/**
*
* @param a:a数组
* @param b:b数组
* @return c:c数组
*/
public static int[] merge(int[] a,int [] b) {
int[] c = new int[a.length+b.length];
//i用于标记数组a
int i=0;
//j用于标记数组b
int j=0;
//用于标记数组c
int k=0;
//a,b数组都有元素时
while(i<a.length && j<b.length) {
if(a[i]<b[j]) {
c[k++] = a[i++];
}else {
c[k++] = b[j++];
}
}
//若a有剩余
while(i<a.length) {
c[k++] = a[i++];
}
//若b有剩余
while(j<b.length) {
c[k++] = b[j++];
}
return c;
}
//打印数组
public static void printArray(int[] arr) {
for(int i:arr) {
System.out.print(i+ " ");
}
}
}
- 方法二
此法用于将两个乱序的数组合并,然后对新合并成的数组进行排序
package com.cyl.day05;
import java.util.ArrayList;
import java.util.Collections;
/**
*用于将两个乱序的数组合并,然后排序
*@author cly
*/
public class MergeSortTwo {
public static void main(String[] args) {
//声明两个无序数组
int[] a = {1,4,7,9,2,3,5,0 };
int[] b = { 3,8,6,9,5 };
//声明并定义新数组的长度
int[] newArray = new int[a.length + b.length];
//先将数组a中的所有元素添加到新数组中
for (int i = 0; i < a.length; i++) {
newArray[i] = a[i];
}
//再将数组b中的元素添加到新数组中
for (int i = a.length, j = 0; i < a.length + b.length; i++, j++) {
newArray[i] = b[j];
}
//利用数组列表对新数组进行排序
ArrayList arr = new ArrayList();
for(int i=0; i<newArray.length;i++){
arr.add(newArray[i]);
}
Collections.sort(arr);
//输出新数组
System.out.println(arr);
}
}