public static void main(String[] args) {
double dat[] = {8.0, -35.0, -14.0, 25.0, -3.0, 1.0, 2.0, 4.0, 20.0, 30.0};
String name[] = {"HdX", "Mxk", "HsD", "EjI", "ZCK", "HdX", "Mxk", "HsD", "EjI", "ZCK"};
softSales(dat, name);
}
private static void printData(String[] names, double[] data) {
System.out.print("{");
for (int i = 0; i < data.length; i++) {
System.out.print(names[i] + ": " + data[i] + ", ");
}
System.out.println("\b\b}");
}
public static void softSales(double dat[], String []name) {
double leftDat[] = new double[dat.length / 2];
double rightDat[] = new double[dat.length - leftDat.length];
String leftName[] = new String[name.length/2];
String rightName[] = new String[name.length - leftName.length];
for (int i = 0; i < dat.length; i++) {
if (i < leftDat.length) {
leftDat[i] = dat[i];
leftName[i] = name[i];
}else {
rightDat[i - leftDat.length] = dat[i];
rightName[i - leftName.length] = name[i];
}
}if (rightDat.length > 1 && rightName.length > 1){
softSales(leftDat, leftName);
softSales(rightDat, rightName);
}
int leftID = 0;
int rightId = 0;
int leftID1 = 0;
int rightId1 = 0;
for (int i = 0; i < dat.length; i++) {
if (leftID == leftDat.length && rightId < rightDat.length &&leftID1 == leftName.length && rightId1 < rightName.length ) {
name[i] = rightName[rightId1];
dat[i] = rightDat[rightId++];
}else if (rightId == rightDat.length && leftID< leftDat.length && rightId1 == rightName.length && leftID1 < leftName.length ){
name[i] = leftName[leftID1];
dat[i] = leftDat[leftID++];
}else
dat[i] = (leftDat[leftID] < rightDat[rightId])?leftDat[leftID++]:rightDat[rightId++];
name[i]= (leftDat[leftID] < rightDat[rightId])?leftName[leftID1++] : rightName[rightId1++];
}
printData(name, dat);
}
}