Class, to be used

This class is beachgoers, representing our people.

import java.util.ArrayList;
import java.util.List;
import java.util.Iterator;
import java.util.Collections;

public class Beachgoer implements Comparable<Beachgoer>{
    private String name;
    private int length;

    // Constructor
    public Beachgoer(String name, int length) {
        this.name = name;
        this.length = length;
    }

    // Getter methods
    public String getName() {
        return name;
    }

    public int getLength() {
        return length;
    }

    @Override
    public int compareTo(Beachgoer other) {
        return Integer.compare(this.length, other.length);
    }

    public static ArrayList<Beachgoer> createList(){
        Beachgoer bg1 = new Beachgoer("Scuba Diver", 1);
        Beachgoer bg2 = new Beachgoer("Karen", 2);
        Beachgoer bg3 = new Beachgoer("Beatboxer", 3);
        Beachgoer bg4 = new Beachgoer("Corn Oil", 4);
        Beachgoer bg5 = new Beachgoer("Lifeguard", 5);
        Beachgoer bg6 = new Beachgoer("Runner", 6);
        Beachgoer bg7 = new Beachgoer("Rapper", 7);
        Beachgoer bg8 = new Beachgoer("Beach Volleyball Dude", 8);
        Beachgoer bg9 = new Beachgoer("M.A.T.I", 9);
        Beachgoer bg10 = new Beachgoer("Click, Half Dolphin, Half Man", 10);
        Beachgoer bg11 = new Beachgoer("Sandcastle", 11);
        Beachgoer bg12 = new Beachgoer("Beach Volleyball Dudette", 12);
        Beachgoer bg13 = new Beachgoer("Surfer", 13);

        // Creating a list of Beachgoer objects
        ArrayList<Beachgoer> beachgoerList = new ArrayList<Beachgoer>();
        beachgoerList.add(bg1);
        beachgoerList.add(bg2);
        beachgoerList.add(bg3);
        beachgoerList.add(bg4);
        beachgoerList.add(bg5);
        beachgoerList.add(bg6);
        beachgoerList.add(bg7);
        beachgoerList.add(bg8);
        beachgoerList.add(bg9);
        beachgoerList.add(bg10);
        beachgoerList.add(bg11);
        beachgoerList.add(bg12);
        beachgoerList.add(bg13);
        
        Collections.shuffle(beachgoerList);

        return beachgoerList;
    }

    public static ArrayList<Beachgoer> createShorterList(){
        Beachgoer bg1 = new Beachgoer("Scuba Diver", 1);
        Beachgoer bg2 = new Beachgoer("Karen", 2);
        Beachgoer bg3 = new Beachgoer("Beatboxer", 3);
        Beachgoer bg4 = new Beachgoer("Corn Oil", 4);
        Beachgoer bg5 = new Beachgoer("Lifeguard", 5);

        // Creating a list of Beachgoer objects
        ArrayList<Beachgoer> beachgoerList = new ArrayList<Beachgoer>();
        beachgoerList.add(bg1);
        beachgoerList.add(bg2);
        beachgoerList.add(bg3);
        beachgoerList.add(bg4);
        beachgoerList.add(bg5);
        
        Collections.shuffle(beachgoerList);

        return beachgoerList;
    }

    public static void main(String[] args) {
        // Creating objects of Beachgoer
        Beachgoer bg1 = new Beachgoer("Scuba Diver", 1);
        Beachgoer bg2 = new Beachgoer("Karen", 2);
        Beachgoer bg3 = new Beachgoer("Beatboxer", 3);
        Beachgoer bg4 = new Beachgoer("Corn Oil", 4);
        Beachgoer bg5 = new Beachgoer("Lifeguard", 5);
        Beachgoer bg6 = new Beachgoer("Runner", 6);
        Beachgoer bg7 = new Beachgoer("Rapper", 7);
        Beachgoer bg8 = new Beachgoer("Beach Volleyball Dude", 8);
        Beachgoer bg9 = new Beachgoer("M.A.T.I", 9);
        Beachgoer bg10 = new Beachgoer("Click, Half Dolphin, Half Man", 10);
        Beachgoer bg11 = new Beachgoer("Sandcastle", 11);
        Beachgoer bg12 = new Beachgoer("Beach Volleyball Dudette", 12);
        Beachgoer bg13 = new Beachgoer("Surfer", 13);

        // Creating a list of Beachgoer objects
        List<Beachgoer> beachgoerList = new ArrayList<Beachgoer>();
        beachgoerList.add(bg1);
        beachgoerList.add(bg2);
        beachgoerList.add(bg3);
        beachgoerList.add(bg4);
        beachgoerList.add(bg5);
        beachgoerList.add(bg6);
        beachgoerList.add(bg7);
        beachgoerList.add(bg8);
        beachgoerList.add(bg9);
        beachgoerList.add(bg10);
        beachgoerList.add(bg11);
        beachgoerList.add(bg12);
        beachgoerList.add(bg13);

        Iterator<Beachgoer> iterator = beachgoerList.iterator();
        int i = 0;
        while (iterator.hasNext()) {
            i++;
            Beachgoer beachgoer = iterator.next();
            System.out.println("Name: " + beachgoer.getName());
            System.out.println("Length: " + beachgoer.getLength());
            System.out.println();
            if(i == 3){
                break;
            }
        }
    }
}

Beachgoer.main(null);
Name: Scuba Diver
Length: 1

Name: Karen
Length: 2

Name: Beatboxer
Length: 3

Bubble Sort

import java.util.ArrayList;
import java.util.Collections;

public class BeachgoerBubbleSort {
    public static void bubbleSort(ArrayList<Beachgoer> beachgoers) {
        int n = beachgoers.size();
        for (int i = 0; i < n - 1; i++) {
            for (int j = 0; j < n - i - 1; j++) {
                if (beachgoers.get(j).compareTo(beachgoers.get(j + 1)) > 0) {
                    // Swap beachgoers
                    Collections.swap(beachgoers, j, j + 1);
                }
            }
        }
    }

    public static void main(String[] args) {
        // Create a list of Beachgoer objects
        ArrayList<Beachgoer> beachgoerList = Beachgoer.createList();

        // Print original list
        System.out.println("Original List:");
        for (Beachgoer beachgoer : beachgoerList) {
            System.out.println("Name: " + beachgoer.getName() + ", Length: " + beachgoer.getLength());
        }

        // Sort the list using Bubble Sort
        bubbleSort(beachgoerList);

        // Print sorted list
        System.out.println("\nSorted List:");
        for (Beachgoer beachgoer : beachgoerList) {
            System.out.println("Name: " + beachgoer.getName() + ", Length: " + beachgoer.getLength());
        }
    }
}

BeachgoerBubbleSort.main(null);
Original List:
Name: Lifeguard, Length: 5
Name: Runner, Length: 6
Name: Beatboxer, Length: 3
Name: Rapper, Length: 7
Name: Beach Volleyball Dude, Length: 8
Name: Surfer, Length: 13
Name: Sandcastle, Length: 11
Name: Scuba Diver, Length: 1
Name: Click, Half Dolphin, Half Man, Length: 10
Name: M.A.T.I, Length: 9
Name: Karen, Length: 2
Name: Corn Oil, Length: 4
Name: Beach Volleyball Dudette, Length: 12

Sorted List:
Name: Scuba Diver, Length: 1
Name: Karen, Length: 2
Name: Beatboxer, Length: 3
Name: Corn Oil, Length: 4
Name: Lifeguard, Length: 5
Name: Runner, Length: 6
Name: Rapper, Length: 7
Name: Beach Volleyball Dude, Length: 8
Name: M.A.T.I, Length: 9
Name: Click, Half Dolphin, Half Man, Length: 10
Name: Sandcastle, Length: 11
Name: Beach Volleyball Dudette, Length: 12
Name: Surfer, Length: 13

Insertion Sort

import java.util.ArrayList;

public class BeachgoerInsertionSort {
    public static void insertionSort(ArrayList<Beachgoer> beachgoers) {
        int n = beachgoers.size();
        for (int i = 1; i < n; i++) {
            Beachgoer key = beachgoers.get(i);
            int j = i - 1;
            while (j >= 0 && beachgoers.get(j).compareTo(key) > 0) {
                beachgoers.set(j + 1, beachgoers.get(j));
                j = j - 1;
            }
            beachgoers.set(j + 1, key);
        }
    }

    public static void main(String[] args) {
        // Create a list of Beachgoer objects
        ArrayList<Beachgoer> beachgoerList = Beachgoer.createList();

        // Print original list
        System.out.println("Original List:");
        for (Beachgoer beachgoer : beachgoerList) {
            System.out.println("Name: " + beachgoer.getName() + ", Length: " + beachgoer.getLength());
        }

        // Sort the list using Insertion Sort
        insertionSort(beachgoerList);

        // Print sorted list
        System.out.println("\nSorted List:");
        for (Beachgoer beachgoer : beachgoerList) {
            System.out.println("Name: " + beachgoer.getName() + ", Length: " + beachgoer.getLength());
        }
    }
}

BeachgoerInsertionSort.main(null);
Original List:
Name: Karen, Length: 2
Name: Beach Volleyball Dude, Length: 8
Name: Surfer, Length: 13
Name: Rapper, Length: 7
Name: Lifeguard, Length: 5
Name: Beach Volleyball Dudette, Length: 12
Name: Scuba Diver, Length: 1
Name: Click, Half Dolphin, Half Man, Length: 10
Name: Runner, Length: 6
Name: Corn Oil, Length: 4
Name: M.A.T.I, Length: 9
Name: Sandcastle, Length: 11
Name: Beatboxer, Length: 3

Sorted List:
Name: Scuba Diver, Length: 1
Name: Karen, Length: 2
Name: Beatboxer, Length: 3
Name: Corn Oil, Length: 4
Name: Lifeguard, Length: 5
Name: Runner, Length: 6
Name: Rapper, Length: 7
Name: Beach Volleyball Dude, Length: 8
Name: M.A.T.I, Length: 9
Name: Click, Half Dolphin, Half Man, Length: 10
Name: Sandcastle, Length: 11
Name: Beach Volleyball Dudette, Length: 12
Name: Surfer, Length: 13

Selection Sort

import java.util.ArrayList;

public class BeachgoerSelectionSort {
    public static void selectionSort(ArrayList<Beachgoer> beachgoers) {
        int n = beachgoers.size();
        for (int i = 0; i < n - 1; i++) {
            int minIndex = i;
            for (int j = i + 1; j < n; j++) {
                if (beachgoers.get(j).compareTo(beachgoers.get(minIndex)) < 0) {
                    minIndex = j;
                }
            }
            // Swap the minimum element with the first element of the unsorted subarray
            Beachgoer temp = beachgoers.get(minIndex);
            beachgoers.set(minIndex, beachgoers.get(i));
            beachgoers.set(i, temp);
        }
    }

    public static void main(String[] args) {
        // Create a list of Beachgoer objects
        ArrayList<Beachgoer> beachgoerList = Beachgoer.createList();

        // Print original list
        System.out.println("Original List:");
        for (Beachgoer beachgoer : beachgoerList) {
            System.out.println("Name: " + beachgoer.getName() + ", Length: " + beachgoer.getLength());
        }

        // Sort the list using Selection Sort
        selectionSort(beachgoerList);

        // Print sorted list
        System.out.println("\nSorted List:");
        for (Beachgoer beachgoer : beachgoerList) {
            System.out.println("Name: " + beachgoer.getName() + ", Length: " + beachgoer.getLength());
        }
    }
}

BeachgoerSelectionSort.main(null);
Original List:
Name: Beatboxer, Length: 3
Name: Beach Volleyball Dudette, Length: 12
Name: Lifeguard, Length: 5
Name: Rapper, Length: 7
Name: Click, Half Dolphin, Half Man, Length: 10
Name: Surfer, Length: 13
Name: Runner, Length: 6
Name: Beach Volleyball Dude, Length: 8
Name: Sandcastle, Length: 11
Name: Scuba Diver, Length: 1
Name: Corn Oil, Length: 4
Name: M.A.T.I, Length: 9
Name: Karen, Length: 2

Sorted List:
Name: Scuba Diver, Length: 1
Name: Karen, Length: 2
Name: Beatboxer, Length: 3
Name: Corn Oil, Length: 4
Name: Lifeguard, Length: 5
Name: Runner, Length: 6
Name: Rapper, Length: 7
Name: Beach Volleyball Dude, Length: 8
Name: M.A.T.I, Length: 9
Name: Click, Half Dolphin, Half Man, Length: 10
Name: Sandcastle, Length: 11
Name: Beach Volleyball Dudette, Length: 12
Name: Surfer, Length: 13

Merge Sort

import java.util.ArrayList;

public class BeachgoerMergeSort {
    public static void mergeSort(ArrayList<Beachgoer> beachgoers) {
        if (beachgoers.size() > 1) {
            int mid = beachgoers.size() / 2;
            
            // Split original list into two sublists
            ArrayList<Beachgoer> leftHalf = new ArrayList<>(beachgoers.subList(0, mid));
            ArrayList<Beachgoer> rightHalf = new ArrayList<>(beachgoers.subList(mid, beachgoers.size()));

            // Recursive calls to sort left and right sublists
            mergeSort(leftHalf);
            mergeSort(rightHalf);

            // Merge sorted sublists
            int i = 0, j = 0, k = 0;
            while (i < leftHalf.size() && j < rightHalf.size()) {
                if (leftHalf.get(i).compareTo(rightHalf.get(j)) <= 0) {
                    beachgoers.set(k++, leftHalf.get(i++));
                } else {
                    beachgoers.set(k++, rightHalf.get(j++));
                }
            }

            // Copy remaining elements from left sublist
            while (i < leftHalf.size()) {
                beachgoers.set(k++, leftHalf.get(i++));
            }

            // Copy remaining elements from right sublist
            while (j < rightHalf.size()) {
                beachgoers.set(k++, rightHalf.get(j++));
            }
        }
    }

    public static void main(String[] args) {
        // Create a list of Beachgoer objects
        ArrayList<Beachgoer> beachgoerList = Beachgoer.createList();

        // Print original list
        System.out.println("Original List:");
        for (Beachgoer beachgoer : beachgoerList) {
            System.out.println("Name: " + beachgoer.getName() + ", Length: " + beachgoer.getLength());
        }

        // Sort the list using Merge Sort
        mergeSort(beachgoerList);

        // Print sorted list
        System.out.println("\nSorted List:");
        for (Beachgoer beachgoer : beachgoerList) {
            System.out.println("Name: " + beachgoer.getName() + ", Length: " + beachgoer.getLength());
        }
    }
}

BeachgoerMergeSort.main(null);
Original List:
Name: Karen, Length: 2
Name: M.A.T.I, Length: 9
Name: Beach Volleyball Dudette, Length: 12
Name: Lifeguard, Length: 5
Name: Beach Volleyball Dude, Length: 8
Name: Runner, Length: 6
Name: Sandcastle, Length: 11
Name: Corn Oil, Length: 4
Name: Beatboxer, Length: 3
Name: Rapper, Length: 7
Name: Scuba Diver, Length: 1
Name: Click, Half Dolphin, Half Man, Length: 10
Name: Surfer, Length: 13

Sorted List:
Name: Scuba Diver, Length: 1
Name: Karen, Length: 2
Name: Beatboxer, Length: 3
Name: Corn Oil, Length: 4
Name: Lifeguard, Length: 5
Name: Runner, Length: 6
Name: Rapper, Length: 7
Name: Beach Volleyball Dude, Length: 8
Name: M.A.T.I, Length: 9
Name: Click, Half Dolphin, Half Man, Length: 10
Name: Sandcastle, Length: 11
Name: Beach Volleyball Dudette, Length: 12
Name: Surfer, Length: 13

Our Sort, Broken Down

Insertion sort, but comparing fully.

import java.util.ArrayList;

public class BeachgoerInsertionSort {
    public static void insertionSort(ArrayList<Beachgoer> beachgoers) {
        int n = beachgoers.size();
        for (int i = 1; i < n; i++) {
            Beachgoer key = beachgoers.get(i);
            System.out.println("Comparing item: " + key.getName());
            int j = i - 1;
            System.out.println("Comparing key to: " + beachgoers.get(j).getName());
            while (j >= 0 && beachgoers.get(j).compareTo(key) > 0) {
                System.out.println("Comparing key to: " + beachgoers.get(j).getName());
                beachgoers.set(j + 1, beachgoers.get(j));
                j = j - 1;
            }
            beachgoers.set(j + 1, key);
        }
    }

    public static void main(String[] args) {
        // Create a list of Beachgoer objects
        ArrayList<Beachgoer> beachgoerList = Beachgoer.createShorterList();

        
        // Print original list
        System.out.println("Original List:");
        for (Beachgoer beachgoer : beachgoerList) {
            System.out.println("\t Name: " + beachgoer.getName() + ", Length: " + beachgoer.getLength());
        }

        // Sort the list using Insertion Sort
        System.out.println();
        System.out.println("=====Starting Sort=====");
        insertionSort(beachgoerList);

    }
}

BeachgoerInsertionSort.main(null);
Original List:
	 Name: Scuba Diver, Length: 1
	 Name: Beatboxer, Length: 3
	 Name: Lifeguard, Length: 5
	 Name: Karen, Length: 2
	 Name: Corn Oil, Length: 4

=====Starting Sort=====
Comparing item: Beatboxer
Comparing key to: Scuba Diver
Comparing item: Lifeguard
Comparing key to: Beatboxer
Comparing item: Karen
Comparing key to: Lifeguard
Comparing key to: Lifeguard
Comparing key to: Beatboxer
Comparing item: Corn Oil
Comparing key to: Lifeguard
Comparing key to: Lifeguard