Prompt
Write a function that takes in an array of integers and returns a sorted version of that array. Use the Bubble Sort algorithm to sort the array.
Sample Input
array = [8, 5, 2, 9, 5, 6, 3]
Sample Output
[2, 3, 5, 5, 6, 8, 9]
solution
import java.util.*;
import java.util.*;
class Program {
// Best: O(n) time | O(1) space
// Average & Worst: O(n^2) time space
public static int[] bubbleSort(int[] array) {
if (array.length == 0) {//A
return new int [] {};
}
boolean sorted = false;//B
int counter = 0;//C
while (!sorted) {
sorted = true;//B
for (int i = 0; i < array.length - 1 - counter; i++) {
if (array[i] > array[i + 1]) {
swap(i, array);
sorted = false;
}
}
counter ++;
}
return array;
}
public static void swap (int i, int[] array) {
int temp = array [i];
array[i] = array[i + 1];
array[i + 1] = temp;
}
}
# A
考虑out of bound的问题
# B
sorted的声明、赋值很细节,要体会
# C
这个可以优化best case