实例分析:
两组有序数据,一组数A[1,6],一组数据B(2,5,8,12,23,34)
B不动,将A插入B,代码实现
public static OptimizeInfo[] merge(OptimizeInfo[] bootOptimizeInfos, OptimizeInfo[] dCOptimizeInfos) {
int lenBootOptimizeInfos = bootOptimizeInfos.length;
int lenDCOptimizeInfos = dCOptimizeInfos.length;
OptimizeInfo[] optimizeInfo = new OptimizeInfo[lenBootOptimizeInfos + lenDCOptimizeInfos];
int i = 0, j = 0, k = 0;// 分别代表数组bootOptimizeInfos ,dCOptimizeInfos , optimizeInfo 的索引
while (i < lenBootOptimizeInfos && j < lenDCOptimizeInfos) {
if (bootOptimizeInfos[i] == null) {
i++;
continue;
}
if (dCOptimizeInfos[j] == null) {
j++;
continue;
}
if (bootOptimizeInfos[i].getScore() > dCOptimizeInfos[j].getScore())
optimizeInfo[k++] = bootOptimizeInfos[i++];
else
optimizeInfo[k++] = dCOptimizeInfos[j++];
}
while (i < lenBootOptimizeInfos)
optimizeInfo[k++] = bootOptimizeInfos[i++];
while (j < lenDCOptimizeInfos)
optimizeInfo[k++] = dCOptimizeInfos[j++];
return optimizeInfo;
}