This commit is contained in:
2025-01-01 14:14:59 -05:00
parent bc72a32f7c
commit 168e269f14

View File

@@ -31,8 +31,7 @@ class Examples {
void testITreeSort(Tester t) { void testITreeSort(Tester t) {
init(); init();
Util.sort(trees); t.checkExpect(Util.sort(trees), treesSorted);
t.checkExpect(trees, treesSorted);
} }
} }
@@ -106,16 +105,27 @@ class Leaf extends ATree {
class Util { class Util {
// Sort a list of trees from least to most frequent. // Sort a list of trees from least to most frequent.
static void sort(ArrayList<ITree> trees) { static ArrayList<ITree> sort(ArrayList<ITree> trees) {
for (int i = 0; i < trees.size() - 1; i++) { System.out.println("Sorting.");
Util.insert(trees.get(i), trees, i); // The sorted list starts out as just the first element.
ArrayList<ITree> sorted = new ArrayList<ITree>(Arrays.asList(trees.getFirst())); // Why must this be so fucking
// verbose.
if (trees.size() == 1)
return sorted;
for (int i = 1; i < trees.size() - 1; i++) {
Util.insert(trees.get(i), sorted, i);
} }
return sorted;
} }
// Insert a Tree into an ArrayList of trees already sorted in [0, i], where // Insert a Tree into an ArrayList of trees already sorted in [0, i], where
// 0 <= i <= trees.size(), such that it is sorted through [0, i]. // 0 <= i <= trees.size(), such that it is sorted through [0, i].
static void insert(ITree tree, ArrayList<ITree> trees, int i) { static void insert(ITree tree, ArrayList<ITree> trees, int i) {
for (int j = 0; j < i + 1; j++) { System.out.println("Set j = 0. While j < " + (i + 1) + ", j++.");
for (int j = 0; j < (i + 1); j++) {
if (trees.get(j).lessThan(tree)) { if (trees.get(j).lessThan(tree)) {
trees.add(j, tree); trees.add(j, tree);
return; return;