冒泡排序原理:
排序每一轮确定一个最小值或最大值,下一轮排序元素数量就可以减一,所以最坏情况只要排序数组长度减一次就可以将顺序确定下来。
实现过程
假设本次排序按从小到大的顺序排列。
第一次排序前,用两个指针分别指向数组0号元素和1号元素,如果0号元素大于1号元素,两个元素交换位置,否顺序不变,然后指针各自向后移一位,所以只要初始指向1号元素的指针到达数组尾部,就说明两个指针已经遍历过数组的所有元素,此时即可停止本轮排序。经过第一轮排序后,可以确定出一个最大值,且这个值会排在数组的最后一个位置,然后进行下一轮排序,下一轮排序又可以确定出倒数第二大的元素,并且会排在数组倒数第二个位置,如此循环数组长度减1次,则数组的顺序就一定是从小到大排列的。
代码如下:由代码可以看出时间复杂度为O(n2)
public static int[] bobbleSort(int[] array) {
int temp;
for (int j = 0; j < array.length; j++) {
for (int i = 0; i < array.length - j - 1; i++) {
if (array[i] > array[i + 1]) {
temp = array[i];
array[i] = array[i + 1];
array[i + 1] = temp;
}
}
}
return array;
}