private static bool isBefore(HtWt left, HtWt right) { if (left.height <= right.height && left.weight <= right.weight) { return(true); } else { return(false); } }
private static int compareHtwt(HtWt left, HtWt right) { if (left.height == right.height) { return(0); } else if (left.height > right.height) { return(1); } else { return(-1); } }
private static void Merge(HtWt[] arr, int start, int end, int mid) { HtWt[] left_arr = new HtWt[mid - start + 1]; HtWt[] right_arr = new HtWt[end - mid]; for (int i = 0; i < left_arr.Length; i++) { left_arr[i] = arr[start + i]; } for (int i = 0; i < right_arr.Length; i++) { right_arr[i] = arr[mid + 1 + i]; } int l = 0, r = 0, k = start; while (true) { if (l > left_arr.Length - 1) { while (r <= right_arr.Length - 1) { arr[k++] = right_arr[r++]; } return; } if (r > right_arr.Length - 1) { while (l <= left_arr.Length - 1) { arr[k++] = left_arr[l++]; } return; } if (compareHtwt(left_arr[l], right_arr[r]) <= 0) { arr[k++] = left_arr[l++]; } else { arr[k++] = right_arr[r++]; } } }
public bool isBefore(HtWt another) { return(this.height <= another.height && this.weight <= another.weight); }