/** * Creates a skyline inductively. * * @param input array of buidling to be put into a skyline * @param size width of desired skyline * @return Skyline with buildings put in. */ public static Skyline inductiveSkyline(ArrayList<Building> input, int size) { Skyline skyline = new Skyline(size); for (int i = 0; i < input.size(); i++) { skyline = Skyline.addToSkyline(input.get(i), skyline); } return skyline; }
/** * Creates a skyline by dividing the array of buildings and merging them back together, adding * buildings in at the base case * * @param input list of buildings to be put into the skyline * @param first starting index in the array * @param last final index in the array * @param size size of the skyine that the buildings will be put into * @return A skyline of buildings */ public static Skyline divideAndConquerSkyline( ArrayList<Building> input, int first, int last, int size) { if (first == last) { Skyline skyline = new Skyline(size); skyline = Skyline.addToSkyline(input.get(first), skyline); return skyline; } else { int half = (first + last) / 2; Skyline firstSkyline = divideAndConquerSkyline(input, first, half, size); Skyline secondSkyline = divideAndConquerSkyline(input, half + 1, last, size); return Skyline.mergeSkylines(firstSkyline, secondSkyline); } }