I want to know if there is any other better way to write this algorithm. What other data structures could be used to make it more simple and effective?
public class BubbleSort {
public static void bubbleSort(int array[]) {
int n = array.length;
int k;
for (int m = n; m >= 0; m--) {
for (int i = 0; i < n - 1; i++) {
k = i + 1;
if (array[i] > array[k]) {
swapNumbers(i, k, array);
}
}
printNumbers(array);
}
}
private static void swapNumbers(int i, int j, int[] array) {
int temp;
temp = array[i];
array[i] = array[j];
array[j] = temp;
}
private static void printNumbers(int[] input) {
for (int i = 0; i < input.length; i++) {
System.out.print(input[i] + ", ");
}
System.out.println("\n");
}
public static void main(String[] args) {
int[] input = { 4, 2, 9, 6, 23, 12, 34, 0, 1 };
bubbleSort(input);
}
}
Output:
2, 4, 6, 9, 12, 23, 0, 1, 34, 2, 4, 6, 9, 12, 0, 1, 23, 34, 2, 4, 6, 9, 0, 1, 12, 23, 34, 2, 4, 6, 0, 1, 9, 12, 23, 34, 2, 4, 0, 1, 6, 9, 12, 23, 34, 2, 0, 1, 4, 6, 9, 12, 23, 34, 0, 1, 2, 4, 6, 9, 12, 23, 34, 0, 1, 2, 4, 6, 9, 12, 23, 34, 0, 1, 2, 4, 6, 9, 12, 23, 34, 0, 1, 2, 4, 6, 9, 12, 23, 34
for (int m = n; . . .)
, but then you never referencem
in the loop. As presented, I don't see how your code can produce the output you claim it produces. Did you make a typo somewhere in transcription? (Most likely then-1
in the inner loop should bem-1
.) \$\endgroup\$