public class Sort {
public static void main(String[] args){
int[] a = {1,3,5,7,9};
int[] b = {2,5,7,7,10};
int[] c = {0,1,6,8,9,11};
int[] d = {0,5,7,22};
int[] result = sort(a,b,c,d);
for (int r:result) {
System.out.print(r+",");
}
}
/**
* 多数组排序整合
* @param data
* @return
*/
private static int[] sort(int[]...data) {
if(data == null)return null;
int[] result = data[0];
if(data.length == 1)return result;
for (int i=1 ; i<data.length ; i++) {
result = sort(result,data[i]);
}
return result;
}
/**
* 两个已排序数组合并处理
* @param a
* @param b
* @return
*/
private static int[] sort(int[] a,int[] b){
// 结果返回数组
int result[] = new int[a.length+b.length];
// 结果返回数组下标
int resultCount = -1;
// 最值小的数组循环标记
int minCount = 0;
int[] maxValue = a[a.length-1] >= b[b.length-1] ? a : b;
int[] minValue = a[a.length-1] < b[b.length-1] ? a : b;
for(int i = 0 ; i < maxValue.length ; i++){
resultCount++;
if(minCount < minValue.length){
// 因为数组是排序的,所以已比较的数据minValue[minCount]不会重复比较
if(maxValue[i] >= minValue[minCount]){
result[resultCount] = minValue[minCount];
i--;
minCount++;
}else{
// 大数组拥有最小值,minCount需要再次比较,所以不需要+1
result[resultCount] = maxValue[i];
}
}else{
// 已不存在小数组比较,此时大数组获取最小值
result[resultCount] = maxValue[i];
}
}
return result;
}
}
运行结果图: