Search code examples
javaalgorithmarraylistbubble-sort

Java Bubblesort Algorithm


I am trying to use the summer to practice more Java to get better by learning how to code algorithms. I have this problem where I add elements to my ArrayList but somehow the first number I add also sets the number of positions in my list which I want to avoid. I only want the 0th index to contain the number 5. I seem to not catch a clue on how to solve this.

public class Algorithms {

private ArrayList<Integer> numbers;

public Algorithms() {

    numbers = new ArrayList<Integer>();
    numbers.add(5);
    numbers.add(4);
    bubblesort();
}

public static void main(String args[]) {
    new Algorithms();
}

public void bubblesort() {

    System.out.println(numbers);
    for (int a = 0; a < numbers.size();) {
        for (int b = 1; b < numbers.size();) {
            int currentNumber = numbers.get(a);
            if (currentNumber > numbers.get(b)) {

                //Collections.swap(numbers, currentNumber, numbers.get(b));

                numbers.set(numbers.get(a), numbers.get(b));
                numbers.set(numbers.get(b), numbers.get(a));

                a++;
                b++;

            } else if (currentNumber < numbers.get(b)) {
                a++;
                b++;
            }
            System.out.println(numbers);
        }
    }
}
}

Solution

  • You are not swapping elements correctly. Instead of

    numbers.set(numbers.get(a), numbers.get(b));
    numbers.set(numbers.get(b), numbers.get(a));
    

    it should be

    int temp = numbers.get(a);
    numbers.set(a, numbers.get(b));
    numbers.set(b, temp);