Search code examples
javasortingbubble-sort

Bubble sort in a Vector in Java


I'm creating a program that can sort objects (vector) with the Bubble sort method. I found a code on the internet which helped me alot to create it (Bubble sort in Arrays): http://www.programmingsimplified.com/java/source-code/java-program-to-bubble-sort

When i compile the program i don't get any syntax error, but the results are not correct. I think i made an error in the IF-Statement, but i'm not sure if that's the only error. Here is the result i get when i run it:

Input number of integers to sort
5
Enter 5 integers
2
0
1
6
4
Sorted list of numbers
1
2
3
3
3

And here's my code:

import java.util.Scanner;
import java.util.*;
import java.io.*;
class BubbleSortVector {
  public static void main(String []args) {
    int n, c, d, swap;
    Scanner in = new Scanner(System.in);

    System.out.println("Input number of integers to sort");
    n = in.nextInt();

    Vector v ;
    v = new Vector();

    System.out.println("Enter " + n + " integers");

    for (c = 0; c < n; c++) 
      //v.addElement(c);
     v.insertElementAt(in.nextInt(),c);


    for (c = 0; c < ( n - 1 ); c++) {
      for (d = 0; d < n - c - 1; d++) {
        if ((Integer)v.elementAt(d) > (Integer)v.elementAt(d+1)) /* For descending order use < */

        {
          swap = (Integer)v.elementAt(d);
          v.insertElementAt(d+1,d);
          v.insertElementAt(swap,d+1);

        }
      }
    }

    System.out.println("Sorted list of numbers");

    for (c = 0; c < n; c++) 
      System.out.println(v.elementAt(c));
  }
}

Solution

  •     // ...
        Vector<Integer> v = new Vector<>();
        // ...
        for (c = 0; c < (n - 1); c++) {
            for (d = 0; d < n - c - 1; d++) {
                if (v.get(d) > v.get(d + 1)) {
                    swap = v.get(d);
                    v.set(d, v.get(d + 1));
                    v.set(d + 1, swap);
                }
            }
        }
        // ...